Où est la signature pour les types intégrés signés stockés? (En Java)
-
13-09-2019 - |
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?
La solution
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.