Récemment, j'ai appris sur les opérateurs de manipulation de bits et le long du chemin il y a ce code qui trouve les chiffres binaires d'un nombre décimal en utilisant le ET (&) opérateur de bits, le code est le suivant:compréhension java manipulation de bits
byte b = -34;
for(int t = 128;t > 0; t = t/2)
{
if((b & t) != 0)System.out.println("1 ");
else System.out.println("0 ");
System.out.println("b & t yields: " + (b & t));
}
J'ai modifié le code pour montrer la valeur calculée par b & t à chaque itération. Je voudrais comprendre le mécanisme exact derrière ce code pour savoir pourquoi cela fonctionne pour trouver les chiffres binaires, s'il vous plaît expliquer pourquoi b est comparé à t chaque itération et pourquoi t est divisé par 2 chaque itération?
En outre, je voudrais savoir comment (b & t) calculé manuellement en indiquant le digits.I binaire ont un & comprendre comment fonctionne mais quand j'ai énuméré les chiffres binaires de 34 et 128 et les comparais :
1 0 0 0 0 0 0 0(128)
0 0 1 0 0 0 1 0(34) //I am unsure if the negative sign should be included
---------------
0 0 0 0 0 0 0 0
le résultat que j'ai obtenu était 0, mais le programme renvoie 128 qui est perplexe.
Ci-dessous je vais inclure aussi le résultat de l'exécution du programme:
1
b & t yields: 128
1
b & t yields: 64
0
b & t yields: 0
1
b & t yields: 16
1
b & t yields: 8
1
b & t yields: 4
1
b & t yields: 2
0
b & t yields: 0
Bien obligé pour l'aide :)
De nos jours, les ordinateurs utilisent le complément à deux, donc '-34' est représenté par' 256-34' comme un octet non signé. – user202729
Merci beaucoup, il est logique que -34 & 128 retour 128 maintenant :) – TheRelativisticPhiloSheep