Sur 16 bits, vous pouvez adapter la puissance (2,16) (2 à la puissance de seizième) différentes combinaisons pour représenter 65536 nombres. Il a été décidé que le zéro est mieux représenté nativement que 000 ... 000 et que les nombres positifs dans le système "deux de complément" sont normalement lisibles (ils sont égaux à la représentation "naturelle binaire" comme 0000 0000 0000 0101 = 5 décimal etc.) .
Les nombres négatifs dans le complément à deux commencent par 1111 1111 1111 1111 pour représenter -1. Pensez-y comme un contre-cadran avec des chiffres qui vont 997, 998, 999 et soudainement quand il doit représenter 1000 il déborde et montre 000. Le principe est le même ici, mais la direction est différente - à partir de ... 000 à ... 111. -2 est représenté par 1111 .... 1110 et ainsi de suite.
Le plus petit nombre possible dans le complément à deux aura 1 sur le devant et des zéros sur le reste des chiffres.
Donc dans le complément 2, est-ce qu'un bit est réservé au signe? Je pensais qu'il est réservé uniquement en représentation de signe-amplitude –
Non, pas vraiment réservé. Le bit le plus à gauche contient vraiment une valeur, 0 s'il est défini sur 0, -32768 s'il est défini sur 1. Il peut être utilisé pour vérifier si le nombre est positif ou négatif (exactement comme le signe-magnitude), mais le compilateur prendra en charge pour vous lorsque vous utilisez des entiers signés/non signés. Si cela vous intéresse plus, vous pouvez lire sur "extension de signe" ... C'est un truc assez drôle que dans les entiers 8 bits "-1" est "1111 1111" et dans 16 bits c'est "1111 1111 1111 1111" (les signes les plus à gauche identiques n'ont pas d'importance, à peu près comme "0000 0101" = "101" = 5). – eyescream