Stockage grand et petit en langage C

Grand et petit

  Vous êtes-vous senti confus lorsque vous avez entendu ce mot pour la première fois? L'ordre de stockage des données dans l'ordinateur est-il différent? Qu'est-ce que c'est que le big endian? Tout d'abord, il faut d'abord connaître le bon sens, les grands et les petits ne sont que des méthodes de stockage différentes dans différents matériels, il n'y a pas de bien ou de mal, mais chacun a ses propres avantages et inconvénients. Tant de choses ont été dites, quelle est la grande et la petite extrémité?

Big endian

  Le mode de stockage big-endian signifie que l'état des données est stocké dans l'adresse haute de la mémoire, et le bit haut des données est stocké dans l'adresse basse de la mémoire.
  Par exemple, un entier 1234, comment est-il stocké dans la mémoire? En prenant 32 bits comme exemple, convertissez-le d'abord en binaire
  décimal: 1234
  Binaire: 100 1101 0010
Insérez la description de l'image ici
  et il y a 32 bits de morsure dans notre mémoire pour stocker des données entières. Par conséquent, le stockage doit être comme suit: Lorsque le
Insérez la description de l'image ici  nombre de bits assez, remplissez le bit haut avec 0, puis stockez les données de bit haut dans l'adresse basse, et les données de bit bas dans l'adresse haute, c'est-à-dire 00 00 04 D2

Petit endian

  Contrairement au mode de stockage big-endian, le mode de stockage little-endian signifie que les bits de poids faible des données sont stockés dans les adresses basses de la mémoire, et les bits de poids fort des données sont stockés dans les adresses hautes de la mémoire.
  De même, prenons l'exemple de 1234.
Insérez la description de l'image ici  Alors pourquoi y a-t-il une distinction entre les grands et les petits bouts? En effet, dans les systèmes informatiques, nous stockons les données en octets. Chaque adresse d'unité correspond à un octet, et un octet correspond à 8 bits, mais notre stockage de données est plus que juste Uniquement limité à un octet de type char, il y a aussi Type court 2 octets, entier 4 octets et long 8 octets. De plus, pour les processeurs de plus de 8 bits, comme le traitement 16 bits ou 32 bits La largeur du registre étant supérieure à un octet, il doit être un problème de disposition de plusieurs octets. Cela a conduit au modèle de stockage big-endian et au modèle de stockage little-endian.
  Après avoir compris les concepts de base du grand et du petit-boutiste, nous devons apprendre à distinguer si une machine utilise le gros-boutiste ou le petit-boutiste.

bool check_mode()
{
    
    
	int a = 1;
	return (*(char*)&a) == 1;//取a的低地址位如果为1,则是小端模式,反之则为大端
}

void main()
{
    
    
	bool flag = check_mode();
	if(flag)
		printf("This is little.\n");
	else
		printf("This is big.\n");
}

  Chacun doit analyser face aux calculs du programme et prendre cette situation en considération.
Par exemple:

unsigned int i;
for(i = 9; i >= 0; i--)
{
    
    
printf("%u\n",i);
}

  Quel devrait être le résultat de ce programme? Est-ce 9 8 7 6 5 4 3 2 1 0?
  Le résultat est souvent inattendu, il produira toujours une boucle infinie en continu. Parce que c'est un nombre non signé, quand il est soustrait à 0, la soustraction sera 1111 1111 1111 1111 1111 1111 1111 1111 1111, quel grand nombre c'est, puis continuer à boucler, quand il est réduit à 0, il reste la même chose, c'est donc une boucle infinie.

  Par conséquent, vous ne devez pas le prendre à la légère sur le petit et le grand stockage et le stockage de données. . .

Je suppose que tu aimes

Origine blog.csdn.net/dream_i_success/article/details/110203063
conseillé
Classement