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>
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 :
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!