Question

L'octet de type de données Java par exemple contenant des données de -128 à 127 dans un seul octet de stockage. Pour permettre de distingush entre - 1 à -128 de 0 à 127, il faudrait des données supplémentaires qui prendrait le type de données obver son stockage alloué. il est vrai que prendre 1 peu plus, mais il va encore plus.

Comment java faire cela?

Était-ce utile?

La solution

Complément à deux :

  

Les types primitifs sont définis pour être les mêmes sur toutes les machines et dans toutes les implémentations, et sont différentes tailles d'entiers en complément à deux, simple et double précision IEEE 754 numéros standards à virgule flottante, un type booléen, et caractères Unicode type char. - La spécification du langage Java: Présentation

Vous pouvez l'imaginer comme un entier de 0 à 255 dont 128 est toujours soustraites.

Plus technique: un nombre entier peut (et) être annulé (positive → négative ou vice-versa) en inversant ses bits et en ajoutant une. Ceci est presque comme complément à un ( qui intervertit simplement tous les bits d'où compléter mais son complément a le problème qu'il a deux zéros différents:. +0 et -0 (nombres à virgule flottante ont aussi, mais pour d'autres raisons et plus ☺ utile) complément à deux résout ce. en ajoutant un, et étendant ainsi la plage de valeurs négatives (ce qui est la raison pour laquelle il est -128 .. 127).

D'une certaine manière on pourrait dire que le signe est en effet « stocké » dans le premier bit du nombre. Ainsi, votre observation qu'il a besoin d'un peu de stockage est correct. Mais la plage numérique d'un byte (positif ou négatif, en ignorant le signe) n'a besoin que 7 bits, vous avez donc un octet à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top