Big endian & little endian ?
clampin
Membre
Salut,
Je lis de plus en plus les termes de Big endian et little endian (ou un truc pareil), a propos des processeur et surtout pour la programmation.
Qu'est ce que cette chose dans le coeur de nos machine ?
Si quelqu'un pouvait expliquer simplement ce bidule ?
Merci
Je lis de plus en plus les termes de Big endian et little endian (ou un truc pareil), a propos des processeur et surtout pour la programmation.
Qu'est ce que cette chose dans le coeur de nos machine ?
Si quelqu'un pouvait expliquer simplement ce bidule ?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Un mot est une valeur faisant plus de 8 bits.
Un mot de 16 bits fait donc 2 octets (c'est un short).
Un mot de 32 bits fait 4 octets (le int).
Un mot de 64 bits fait 8 octets (le long long).
Maintenant, selon l'architecture du microprocesseur, l'ordre des octets formant le mot change.
Sur les architectures little-endian, les octets les moins significatifs sont en premier, les plus significatifs en dernier. Typiquement, c'est le cas des Intel.
Sur les big-endian, les octets les plus significatifs sont en premier, et les moins significatifs sont en dernier. C'est le cas des 680x0 et des PPC.
Pour faire un paralèlle avec notre système décimal, le nombre 123 (1*100 + 2*10 + 3) est big-endian.
En little-endian, il se présenterait ainsi : 3 2 1 (3 + 2*10 + 1*100).
EDIT :
La manière de dire le nombre 21 en français et en allemand suit cette logique.
Les français disent VINGT ET UN : c'est du big-endian (VINGT est plus significatif que UN et il est en premier).
Les teutons, eux, disent EIN UND ZWANZIG (littéralement UN ET VINGT). C'est du little-endian (EIN -1- est moins significatif que ZWANZIG -20-, et il est en premier).
.
Ce n'est que l'ordre des octets qui change.
Par exemple le short 769 (=3*256+1) s'écrira "00000011 00000001" en BigEndian et "00000001 00000011" en LittleEndian, mais jamais "10000000 11000000"
C'est exact !
J'ai édité le message en conséquence.
.
exemples les octets N+1 à N+3 contiennent le chiffre 231 en bigendian.
N+0 N+1 N+2 N+3 N+4
? 2 3 1 ?
Pour additionner ce chiffre à un autre chiffre, le pointeur étant en N+0, devra pointé successivement les octets N+0, N+3, N+2, N+1, puis sauter en N+4!
Même exemple pour le Littleendian et le chiffre 231
N+0 N+1 N+2 N+3 N+4
? 1 3 2 ?
Pour additionner ce chiffre, le pointeur étant en N+0, devra pointé successivement les octets N+0, N+1, N+2, N+3, et continuer en N+4.
On voit que la microprogrammation interne du microProcesseur sera bien plus simple pour du littleEndian et par conséquent plus rapide (probablement) et moins pénalisante en nombre de transistors mis en oeuvre.