Maison  >  Article  >  Quelle est la différence entre le mode big endian et le mode little endian ?

Quelle est la différence entre le mode big endian et le mode little endian ?

青灯夜游
青灯夜游original
2020-12-07 12:04:3545636parcourir

Différence : en mode big-endian, l'octet de données de mot élevé est stocké dans l'adresse basse, et l'octet de données de mot faible est stocké dans l'adresse haute contrairement au mode de stockage big-endian, dans le mode de stockage petit-boutiste Au milieu, l'adresse basse stocke l'octet faible des données de mot et l'adresse haute stocke l'octet élevé de données de mot.

Quelle est la différence entre le mode big endian et le mode little endian ?

L'environnement d'exploitation de cet article : système Windows 7, ordinateur Dell G3.

Recommandations associées : "Introduction à la programmation"

La différence entre le mode big endian et le mode little endian

En plus du type char 8 bits en langage C, il existe également un type court 16 bits et un type long 32 bits (selon le compilateur spécifique pour les processeurs de plus de 8 bits, tels que 16). -bit Ou pour un processeur 32 bits, puisque la largeur du registre est supérieure à un octet, il doit y avoir un problème sur la façon d'organiser plusieurs octets. Cela conduit au mode de stockage big-endian et au mode de stockage small-endian.

Mode big endian :

L'octet de poids fort des données de mot est stocké dans l'adresse basse, tandis que l'octet de poids faible des données de mot est stocké dans l'adresse haute.

Mode de stockage Little Endian :

Contrairement au mode de stockage Big Endian, en mode de stockage Little Endian, l'octet faible des données de mot est stocké dans l'adresse basse. stocke l'octet de poids fort des données de mots.

Par exemple, le nombre 0x1234 de 16 bits est stocké dans la mémoire du processeur en mode petit-endien (en supposant qu'il soit stocké à partir de l'adresse 0x4000) :


La méthode de stockage dans la mémoire CPU en mode big-endian est :

内存地址

0x4000

0x4001

存放内容

0x34

0x12

Adresse mémoire

0x4000

内存地址

0x4000

0x4001

存放内容

0x12

0x34

0x4001

td>

内存地址

0x4000

0x4001

0x4002

0x4003

存放内容

0x12

0x34

0x56

0x78

Contenu du stockage

0x34

0x12

Adresse mémoire

0x4000

0x4001

Contenu du stockage 0x12 0x34
Et en mode big-endian mémoire CPU La méthode de stockage est :
Adresse mémoire 0x4000 td > 0x4001 0x4002 0x4003
Contenu du stockage 0x12 0x34 0x56 0x78
Notre structure X86 couramment utilisée est le mode petit endian, et KEIL C51 Il est le mode big endian. De nombreux ARM et DSP sont en mode petit-boutiste. Certains processeurs ARM peuvent également sélectionner le mode big-endian ou little-endian par matériel. Remarque : L'utilisation de la méthode big-endian pour le stockage de données est conforme à la pensée humaine normale, tandis que l'utilisation de la méthode small-endian pour le stockage de données est propice au traitement informatique. (Ma compréhension : le mode Little Endian met un bit faible dans l'octet faible)Le code suivant peut être utilisé pour tester si votre compilateur est en mode Big Endian ou Little Endian mode :
int main()
{
short int x;
char x0,x1;
x=0x1122;
x0=*((char*)&x); //低地址单元 ,或者((char*)&x)[0];
x1=*((char*)&x + 1); //高地址单元,或者((char*)&x)[1];
printf("x0=%x\nx1=%x\n",x0,x1);
}
Si x0=0x11, c'est big endian ; si x0=0x22, c'est little endian....Vous voulez en savoir plus Pour les articles, s'il vous plaît visitez le site Web PHP chinois ! !

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn