6
votes

Java octet Type de données

Didacticiel Sun ', il est indiqué à propos d'un octet:

octet: le type de données d'octets est un entier de complément de deux de deux bits. Il a une valeur minimale de -128 et une valeur maximale de 127 (inclusive). Le type de données d'octets peut être utile pour économiser de la mémoire dans de grandes matrices, où les économies de mémoire importent réellement. Ils peuvent également être utilisés à la place de Int où leurs limites aident à clarifier votre code; Le fait qu'une gamme de variable est limitée peut servir de forme de documentation.

Comment ça sauve la mémoire? Quel est le compliment de 2?


0 commentaires

3 Réponses :


10
votes

Il enregistre la mémoire en consommant seulement huit bits de stockage, contre 32 pour les entiers. La taille des matrices est directement proportionnelle à la taille du type de données contenue; Un éventail d'entiers consommera environ quatre fois plus de mémoire ( Wadwaves ) qu'un tableau d'octets.

de Wikipedia :

Un système de deux-complément ou L'arithmétique de deux compléments est un système dans lequel les nombres négatifs sont représenté par le complément des deux la valeur absolue; 1 Ce système est la méthode la plus courante de représentation entiers signés sur des ordinateurs. [2] Dans Un tel système, un nombre est annulé (converti du positif à négatif ou vice versa) en calculant ses deux complément. Un N-bit deux-complément Le système de chiffre peut représenter chaque Entier dans la plage -2 ^ (N-1) à + 2 ^ (N-1) -1.


0 commentaires

0
votes

octets Enregistrer la mémoire en raison d'un seul octet long, tandis que la plupart des autres types de données couramment utilisés sont 4 ou 8 octets longs.

TwoS complément est la manière presque universelle d'encoder des nombres signés comme binaire. Cet encodage a la belle propriété qui incrémente toute valeur comme si elle était juste binaire, vous donne la prochaine valeur entière, même si la valeur passe à travers zéro. Les mêmes circuits CPU peuvent calculer des entiers signés ou non signés.


0 commentaires

2
votes

L'autre chose est que, principalement pour des raisons historiques, la plupart des données sont divisées en octets de 8 bits. Cela aurait pu être n'importe quel nombre, mais des ordinateurs 8 bits étaient vraiment populaires lorsque les choses étaient vraiment standardisées, je suppose.

Ainsi, par exemple, le texte est souvent stocké avec un octet de 8 bits par lettre (en mode ASCII). Les fichiers de données sont souvent indexés à l'aide d'index des pointeurs sur des index d'octets. Les gens parlent de kilo-octets et de mégaoctets, et ils signifient 1024 * 8 bits. ou 2 20 * 8 bits.

Les octets sont une sorte de l'unité universelle d'informatique pour de nombreuses fins. Si vous souhaitez modifier un fichier standard lu par d'autres programmes, vous devrez probablement le charger dans un octet [] et manipuler des octets individuels à un moment donné.

Si Sun n'incluait pas de type de données d'octets, écrire des programmes Java qui travaillaient avec des données ou du texte d'autres programmes auraient été une douleur énorme. Vous devriez charger des entiers et faire des changements et des opérations pour isoler des bits individuels et diviser les index de 4 tout le temps. Pas drôle.

Les octets n'ont pas été réellement ajoutés pour sauver la mémoire, mais pour la compatibilité.

Parce qu'un octet peut avoir l'un des 2 8 = 256 valeurs possibles, Sun a décidé qu'ils devraient désigner -128 à 127, plutôt que 0 à 255, car ils ne voulaient pas traiter d'avoir Les numéros signés et non signés (tous leurs types de données sont signés et Java n'a pas le mot clé non signé comme C / C ++)

Ils ont utilisé le complément de deux fois parce que c'est la façon standard de traiter des nombres négatifs.


0 commentaires