Endian représentation des valeurs de 64 bits
Supposons que j'ai unsigned long long x = 0x0123456789ABCDEF
.
Lequel des énoncés suivants est correct? (Je peux vérifier uniquement la première):
- Sur un 32 bits de poids faible du processeur, il apparaîtra dans la mémoire comme
67 45 23 01 EF CD AB 89
. - Sur une version 64 bits de poids faible du processeur, il apparaîtra dans la mémoire comme
EF CD AB 89 67 45 23 01
. - Sur un 32 bits big endian processeur, il apparaîtra dans la mémoire comme
01 23 45 67 89 AB CD EF
. - Sur une version 64 bits de big-endian processeur, il apparaîtra dans la mémoire comme
01 23 45 67 89 AB CD EF
.
avez-vous essayé? Avez-vous googlé ça?
"Endian représentation de 64 bits valeur" serait un meilleur titre. Enregistre sur un système 32 bits 32 bits.
Il n'a pas montré sur un débordement de pile questions & réponses. Et comme je l'ai mentionné dans la question: je ne peux vérifier la première (puisque je n'ai que que le processeur spécifique à portée de main).
Les deuxième, troisième et quatrième sont vrai, le premier est faux. Notez que 32 vs 64 bits est un hareng rouge - seulement l'endianness questions.
"Endian représentation de 64 bits valeur" serait un meilleur titre. Enregistre sur un système 32 bits 32 bits.
Il n'a pas montré sur un débordement de pile questions & réponses. Et comme je l'ai mentionné dans la question: je ne peux vérifier la première (puisque je n'ai que que le processeur spécifique à portée de main).
Les deuxième, troisième et quatrième sont vrai, le premier est faux. Notez que 32 vs 64 bits est un hareng rouge - seulement l'endianness questions.
OriginalL'auteur barak manos | 2014-01-31
Vous devez vous connecter pour publier un commentaire.
Le premier est mauvais. Sur ia32 au moins la mise en page est
EF CD AB 89 67 45 23 01
.Les autres sont corrects.
Veuillez noter que la réponse à cette question n'est pas dictée par la norme. La représentation entière est le compilateur fabricant. Il est possible (bien que très peu pratique) pour un compilateur pour stocker des valeurs entières dans un big-endian sur little-endian matériel.
OriginalL'auteur Sergey L.
Little endian moyen le moins significatif de bits du premier octet, et big endian moyens les moins significatif bits sont dans le dernier octet:
0x0123456789ABCDEF big endian est 0x01, 0x23, 0x45 ...
0x0123456789ABCDEF little endian est 0xEF, 0xCD, 0xAB ...
Le natif word endianess et la taille du processeur n'est pas sans conséquence; l'apparition dans la mémoire est dictée par la endian.
Le boutisme d'un entier détermine l'ordre des octets de l'entier dans la mémoire. Les Structures n'ont pas boutisme. Endianness est une propriété des nombres entiers dans une structure, mais la structure elle-même est définie comme le compilateur choisit, avec l'alignement sur le terrain qu'il choisit.
manos Il y a pas de limite de taille. Séquentielle endian 1 2 3 4 5 6 7 8 et 8 7 6 5 4 3 2 1 sont les plus courants, mais 5 6 7 8 1 2 3 4 et d'autres variantes existent. Pour le plaisir, notez que l'URL est un mixte endian "stackoverflow.com/questions/21478765...". Si c'était big endian, il serait "com.stackoverflow/questions/21478765..."
OriginalL'auteur Will
Je dirais que le 32 bits solution est très bien pour le compilateur. Il peut choisir de représenter ce type qu'il manque de support natif en aucune façon qu'il veut, tant que la taille est de l'un prévu.
Le 64 bits, je serais d'accord avec être correct.
OriginalL'auteur unwind