J'ai essayé de convertir le nombre -441 en binaire, mais je ne sais pas vraiment comment y parvenir.
J'ai d'abord converti 441 en binaire qui est: 110111001 Ensuite, je suis supposé prendre le complément de ce nombre qui est: 001000110 Et puis, je devrais en ajouter un qui donnerait: 001000111
L’exercice dit que je dois donner la représentation binaire en 10 bits et 16 bits, et donc je pensais pouvoir mettre un zéro avant le nombre et c’est tout, mais après de nombreuses recherches, j’ai découvert que je devais mettre un UN avant le numéro, pourquoi est-ce le cas?
Comment pourrais-je convertir environ -441 en un nombre de 16 bits?
Je vous remercie.
Vous êtes confus parce que vous avez oublié qu'il doit y avoir quelque chose qui distingue les nombres positifs des nombres négatifs.
Supposons que vous souhaitiez stocker des nombres non négatifs sur 8 bits.
00000000
est 0,00000001
est 1,00000010
est 2,00000011
est 3,00000100
est 4,11111111
est 255Ainsi, vous pouvez stocker des numéros dans la plage 0-255 sur 8 bits. 255 = 28 - 1. (2 est la base du système binaire, 8 le nombre de bits, 1 est soustrait car nous voulons compter 0 dans)
Supposons maintenant que vous souhaitiez également stocker des nombres négatifs. Comment pouvons-nous y parvenir? Nous pouvons dédier un bit pour le signe. Si ce bit est 0
, nous interprétons les 7 autres bits comme un nombre positif, sinon comme un nombre négatif. Il est préférable d'utiliser le bit le plus significatif pour le signe, car cela facilite certaines opérations.
Approche triviale: Il suffit de lire un nombre tel quel:
00000001
== 1 et 10000001
== -101000010
== 66 et 11000010
== -6601111111
== 127 et 11111111
== -127 Complément des ones: Pour tout nombre x
, renverser sa représentation binaire donne une représentation binaire de -x
. Cela signifie que:
00000001
== 1 et 11111110
== -101000010
== 66 et 10111101
== -6601111111
== 127 et 10000000
== -127 Complément à deux: Pour tout nombre x
, renverser sa représentation binaire et ajouter 1 donnent une représentation binaire de -x
. Cela signifie que:
00000001
== 1 et 11111111
== -101000010
== 66 et 10111110
== -6601111111
== 127 et 1000001
== -12710000000
== -128Pourquoi le complément à deux est-il le meilleur?
00000000
vaut zéro00000000
et 10000000
valent zéro00000000
et 11111111
valent zéroNotez que si nous dédions le bit le plus significatif au bit de signe, nous ne pouvons pas convertir un nombre en binaire sans savoir combien de bits nous aurons besoin. Par exemple, si nous avons 4 bits, le nombre -5 dans une approche triviale est 1101
, sur 7 bits, il serait 1000101
. 0001101
(4 bits sur-5 complétée avec des zéros d'une longueur de 7 bits) correspond en fait à 13 (le bit le plus significatif est 0, il est donc positif).
Je ne ferai pas les devoirs pour vous, mais je peux vous donner des conseils généraux:
-x
en N
bits, la représentation du complément à deux longs:-x
en binaire en utilisant le complément à deux.N-1
longueur.Je pense que vous pouvez comprendre le reste de cette réponse. Si vous avez d'autres questions, laissez un commentaire.
Eh bien, après avoir obtenu le complément à deux, vous devez ajouter un 0 à la fin du binaire afin de rendre la notation 10 bits. La difficulté réside dans le fait que vous devez insérer un bit signé pour indiquer que le fichier binaire est un entier négatif, c.-à-d. (1) 0001000111