Maison >Java >javaDidacticiel >Pourquoi un entier Java converti en octet donne-t-il -124 alors qu'il vaut 132 ?

Pourquoi un entier Java converti en octet donne-t-il -124 alors qu'il vaut 132 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-17 10:29:03640parcourir

Why Does a Java Integer Cast to a Byte Result in -124 When It's 132?

Le comportement curieux de Java dans la conversion de type : dévoilement du mystère -124

Lorsque vous tentez d'attribuer un entier à un octet en Java, un intriguant Une observation se pose : une valeur entière de 132 est rendue comme -124 lorsqu'elle est convertie en octet. Ce résultat énigmatique peut paraître déroutant à première vue.

Explorer le puzzle du complément à deux

Pour résoudre cette énigme, il est crucial de se plonger dans les types de données fondamentaux de Java et leur représentation. En Java, les types entiers tels que int et byte sont signés, en utilisant la notation complément à deux. Avec cette notation, le bit le plus significatif signifie le signe, conservant sa valeur en tant que bit le plus significatif à mesure que le nombre est étendu à des tailles de bits plus grandes.

À la recherche du bonheur non signé

Dans la plupart des scénarios, il est souhaitable d'interpréter l'octet comme une valeur non signée, en supprimant toute information de signe. Ceci peut être réalisé grâce à des opérations au niveau du bit. Par exemple, appliquer un ET au niveau du bit avec un masque de 0xff à l'octet signé élimine efficacement les bits de signe, révélant la valeur non signée.

Le rituel de démasquage dévoilé

Le le processus se déroule comme suit :

  1. Octet en tant que signé Entier : Considérons un octet signé représenté par 11111111 en binaire. Java interprète cela comme -1.
  2. ET au niveau du bit avec masque : L'application de l'opération ET au niveau du bit avec 0xff masque les bits de signe, donnant 00000001 en binaire.
  3. Entier transformé : Java interprète la valeur masquée comme un entier non signé, qui est 1 en représentation décimale.

Cette technique permet une extraction transparente des valeurs d'octets non signés à partir d'entiers signés.

Conclusion

Conversion de Java à partir de int to byte peut introduire des comportements subtils mais fascinants en raison de la notation complémentaire à deux sous-jacente. Comprendre ces nuances aide à percer le mystère derrière la sortie inattendue -124, permettant ainsi aux développeurs de manipuler efficacement les types de données dans leurs applications Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn