Maison > Java > javaDidacticiel > Pourquoi « value & 0xff » produit-il une valeur non signée en Java, même si « value » est un octet signé ?

Pourquoi « value & 0xff » produit-il une valeur non signée en Java, même si « value » est un octet signé ?

DDD
Libérer: 2024-11-02 02:45:02
original
614 Les gens l'ont consulté

Why does `value & 0xff` produce an unsigned value in Java, even though `value` is a signed byte?

Manipulation au niveau du bit avec Value & 0xff en Java

Dans cet extrait de code Java :

<code class="java">byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned)
int result = value & 0xff;</code>
Copier après la connexion

la question se pose : pourquoi l'opération AND au niveau du bit (&) entre value et 0xff produit-elle le résultat 254 (non signé) au lieu de -2 (signé) comme prévu ?

Contrairement au C, l'octet est un type signé en Java. L'attribution d'une valeur à int sans manipulation au niveau du bit entraînerait la valeur signée -2. Cependant, l'utilisation de & avec 0xff permet d'obtenir la valeur non signée prévue.

La clé ici est que & fonctionne sur les valeurs int. Lorsque la valeur (un octet) est utilisée avec &, elle est d'abord promue en entier. De même, 0xff est un littéral int. L'opération & donne ensuite la valeur binaire de 8 bits à partir de la valeur placée dans les 8 bits les moins significatifs du résultat.

Dans cet exemple :

  • la valeur est promue à -2 (11111110 en binaire)
  • 0xff représente 255 (11111111 en binaire)
  • value & 0xff donne donc 254 (11111110 en binaire)

Cette manipulation au niveau du bit est couramment utilisée pour extraire des bits spécifiques ou conserver la nature non signée d'une valeur, en particulier dans des scénarios de programmation de bas niveau ou de manipulation de données.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal