2015-10-11 2 views
0

J'ai besoin de votre aide, voici une partie de mon code, mais il y a un problème que je ne peux pas résoudre. Plese m'aider; C'est ce que je l'ai fait pour l'instant, je peux obtenir entier positif en 16 bits sous forme binaire
`afficher les 16 bits pour l'entier

 Console.WriteLine("Enter an integer : "); 

     string inputnumber = Console.ReadLine(); 

     int num = int.Parse(inputnumber); 

     string value = Convert.ToString(num, 2).PadLeft(16, '0'); 

     Console.WriteLine("The bits are : {0}", value); 
     Console.ReadKey();` 

et la question est de savoir comment vais-je obtenir une valeur négative d'un nombre entier sous forme binaire 16 bits

comme; quand je entrée 5, je peux obtenir: 0000000000000101

and i need -5 -------------> 1111111111111011 

Répondre

4

En C# int est un type 32 bits. Vous devez utiliser short (un type 16 bits) à la place. Pour les nombres positifs jusqu'à 32767, les 16 premiers bits (inférieurs) int et short sont les mêmes, mais pour les nombres négatifs, c'est différent.

short num = short.Parse(inputnumber); 
+0

MERCI BEAUCOUP, VOUS AVEZ SAUVÉ MA VIE: D: D – SNYLMZ

+0

Les 16 premiers bits ne sont pas différents, ils sont identiques. -5 en 32bit est 11111111111111111111111111111011, les 16 bits inférieurs sont égaux. –

+0

@ AntonínLejsek Dans une notation positionnelle, le premier chiffre est le chiffre le moins significatif, donc "premiers bits" et "bits inférieurs" signifient la même chose. J'ai édité ma réponse pour éviter toute confusion. –

0

Ceci est un comportement correct car il est stocké de cette manière dans un ordinateur. C'est ce que l'on appelle two's complement où le bit le plus significatif (le plus à gauche) vous dit que c'est un nombre négatif. Gardez aussi à l'esprit que int contient 32 bits