Quelle est la représentation binaire de «256»? [fermé]

15

Vous pouvez convertir décimal en binaire et binaire en décimal. Mais comment pouvez-vous représenter le nombre "256"?

255 = 11111111

Un octet ne peut pas avoir plus de 8 chiffres binaires (bits). Comment est-ce possible?

Pranit Bauva
la source
3
Comme l'a déjà dit @Serious. Vous avez besoin d'un bit de plus, car les ordinateurs commencent à compter à partir de 0. C'est un 11 en "langage de la main", ou "une personne de plus" (octet) dans le monde réel :)
SOMN
2
J'ai fermé ceci comme "Pas une vraie question" car il est difficile de dire ce que vous voulez réellement savoir. Voulez-vous connaître la représentation binaire d'un nombre? Vous demandez-vous comment il est possible qu'un nombre existe même s'il ne peut pas tenir dans un octet? Vous vous demandez comment les données sont stockées en bits et octets? Oui, 1 octet ne peut pas contenir plus de 8 bits, car c'est la définition d'un octet. Mais cela n'impose aucune limite au nombre en général.
Der Hochstapler
Vous ne pouvez pas représenter 256 sur 8 bits.
Overmind

Réponses:

40

Vous demandez comment représenter 256 en binaire, mais je suppose que vous vous demandez pourquoi les gens disent que les octets peuvent stocker 256 nombres différents, alors que le plus grand nombre qu'il stocke est 255. Comme l'a dit Claudiop, les ordinateurs commencent à compter à 0, donc 0 est en fait le premier nombre, 1 est le deuxième, 2 est le troisième ... 255 est le 256e.

En outre, 11111111 n'est que de 255 pour les octets non signés. Lorsque vous avez un octet signé (une valeur signée peut contenir des valeurs négatives), 11111111 est en fait -1. Voir http://en.wikipedia.org/wiki/Two's_complement . La façon dont le complément à deux fonctionne, l'ajout d'un nombre négatif à un nombre positif donne 0. Comme d'autres l'ont dit, si nous ajoutons un peu à 11111111 et que votre type de données ne peut prendre en charge que 8 bits, le dernier bit débordera et vous laissera avec 0. Pour les octets signés, les valeurs vont de -128 à 127. 128 nombres négatifs + 0 + 127 nombres positifs = 256 nombres au total.

Pour les valeurs signées, le premier bit est le bit "signe". Si ce bit est activé, le nombre est négatif. 10000000 est négatif, 01000000 est positif, 11111111 est négatif, 01111111 est positif ...

Si vous êtes sur Windows (peut-être que Mac l'a aussi), vous pouvez ouvrir la calculatrice, la mettre en mode programmeur, choisir sbyte et jouer avec les bits pour voir comment ils sont corrélés à leurs représentations décimales.

Calculatrice Windows affichant 256 en décimal et binaire

mowwwalker
la source
12

Eh bien, vous avez besoin de 2 octets pour représenter cela. 256 = 00000001 00000000

Michael S.
la source
11

Comme vous le savez déjà, 255d (décimal) est égal à 11111111b (binaire). Si vous voulez maintenant ajouter 1 à la valeur, il y a deux possibilités:

Soit vous n'avez que 8 bits. Dans ce cas, un soi-disant débordement se produit. Donc "en interne", le 1 sera ajouté résultant en 100000000b (256d en 9 bits). Mais comme vous ne disposez que de 8 bits, les 8 bits inférieurs seront "renvoyés". Vous vous retrouvez donc avec 0d = 0b (un indicateur de débordement spécial sera défini sur la plupart des architectures informatiques, juste comme note secondaire).

Pensez à cela comme à compter avec vos doigts. Imaginez que vos doigts montrent 9d. Maintenant, vous ajoutez un doigt de plus. Vous vous retrouvez avec 10. Que faites-vous si vous voulez en ajouter un de plus?

L'autre possibilité est que vous disposez de plus de 8 bits. Dans ce cas, vous pouvez simplement ajouter un chiffre de plus au début et le résultat sera vraiment 100000000b = 256d.

Un octet est la plus petite "unité" qu'un système informatique (système de mémoire) puisse adresser. Cela signifie que si vous ne voulez connaître qu'un seul bit, vous devez demander au système de mémoire de vous donner un certain octet à partir d'une adresse et vous devez ensuite déterminer la valeur du bit qui vous intéresse.

Mais de la même manière que 8 bits constituent un octet, il existe également des types de données plus grands. 2 octets constituent un mot (16 bits), deux mots (quatre octets, 32 bits) constituent un double mot. Et les architectures 64 bits standard actuelles ont même des types de données 64 bits (appelés registres).

Shi
la source
Oui, et l'ordinateur ne considère pas ces 64 bits comme un groupe de 8 octets distincts, mais comme une seule unité composée de 64 bits. Par exemple, si vous avez signé des valeurs, alors un seul de ces 64 bits est le bit de signe.
M. Lister
5

Il s'agit de 100000000 et il a besoin de plus d'un octet. En fait, il a besoin de 9 bits.

Sérieux
la source
0

Vous pouvez le représenter par une opération de décalage de bit (gauche ou droite selon l' endianité de la représentation binaire). Par exemple, cette ligne fonctionne pour une grande représentation endienne (octet le plus significatif en premier):

1 << 8

Un octet non signé ne peut contenir que 256 valeurs, ce qui inclut la plage de [0 - 255]. Pour la valeur 256, vous devez utiliser un type de données capable de contenir une valeur plus élevée, par exemple un entier.

oleksii
la source