Supposons que j'ai le nombre 'numb'=1025 [00000000 00000000 00000100 00000001]
représenté:
Sur Little-Endian Machine:
00000001 00000100 00000000 00000000
En Big-Endian Machine:
00000000 00000000 00000100 00000001
Maintenant, si je demande une Maj Gauche sur 10 bits (c'est à dire: numb <<= 10), je devrais avoir:
[A] Sur Little-Endian Machine:
Comme je l'ai remarqué dans GDB, Little Endian ne la touche Maj Gauche en 3 étapes: [je l'ai montré, '3' des Mesures afin de mieux comprendre le traitement seulement]
-
Traiter le pas. en Big-Endian Convention:
00000000 00000000 00000100 00000001
-
Appliquer Le Décalage Vers La Gauche:
00000000 00010000 00000100 00000000
-
Représenter le Résultat de nouveau en Little-Endian:
00000000 00000100 00010000 00000000
[B]. En Big-Endian Machine:
00000000 00010000 00000100 00000000
Ma Question est:
Si j'directement appliquer un Décalage à Gauche sur le Little Endian Convention, il devrait donner:
numb
:
00000001 00000100 00000000 00000000
numb << 10
:
00010000 00000000 00000000 00000000
Mais en fait, ça donne:
00000000 00000100 00010000 00000000
Pour atteindre le deuxième résultat seulement, j'ai montré trois hypothétique étapes ci-dessus.
Merci de m'expliquer pourquoi ces deux résultats sont différents: Le résultat réel de l' numb << 10
est différent du résultat attendu.