[Big-Endian- und Little-Endian-Speicher] C-Sprache


Vorwort

Lassen Sie uns zunächst die Konzepte von Big Endian und Little Endian anhand einer Frage vorstellen, wie unten gezeigt

Bitte beschreiben Sie kurz die Konzepte von Big-Endian und Little-Endian und entwerfen Sie ein kleines Programm, um die Bytereihenfolge der aktuellen Maschine zu bestimmen.


1. Die Konzepte von Big Endian und Little Endian.

Der Big-Endian-Modus (Speichermodus) bedeutet, dass die niederwertigen Datenbits in den hohen Adressen des Speichers und die höherwertigen Datenbits in den niedrigen Adressen des Speichers gespeichert werden. Little-Endian (Speicherung). )-Modus bedeutet, dass die niederwertigen Bits der Daten in den niedrigen Adressen des
Speichers gespeichert werden
. Adresse, und die höherwertigen Bits der Daten werden in den hohen
Adressen des Speichers gespeichert.

1. Detaillierte Erklärung von Big Endian und Little Endian

Wir wissen, dass Daten in Computern in Form von Zweierkomplementcodes gespeichert werden.(Wenn Sie den Komplementcode nicht verstehen, können Sie die Einführung in Bitoperatoren in diesem Artikel lesen .) Beispielsweise werden die ganzzahligen Daten 2 in der Form
0000 0000 0000 0000 0000 0000 0000 0010 im Speicher gespeichert. Wir Konvertieren Sie den Zweierkomplementcode in eine Zehn. Die Hexadezimalzahl ist 00 00 00 02.
Als wir sie jedoch in der VS 2022-Umgebung debuggten, stellten wir fest, dass die im Speicher gespeicherten Hexadezimalziffern der Zahl 2 wie folgt lauten:
Die Nummer 2 im Gedächtnis
In der obigen Abbildung , können Sie sehen, dass die Zahl 2 ist. Das Speicherformat im Speicher ist 02 00 00 00 , was genau die entgegengesetzte Reihenfolge der oben berechneten 00 00 00 02 ist , aber nicht jedes Bit hat das entgegengesetzte Format, wie z. B. 20 00 00 00. Dies liegt daran, dass im Speicher unsere Daten als Ganzes in Bytes gespeichert werden und unsere IDE: VS 2022 in Form von Little Endian gespeichert wird, das heißt, die hohen Bits werden an hohen Adressen und die niedrigen Bits platziert werden an günstigen Adressen platziert.

2. Schreiben Sie ein Programm, um die Bytereihenfolge der aktuellen Maschine zu bestimmen

#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
int main()
{
    
    
	int a = 1;
	char* p = (char*)&a;//用char型的指针访问a的首地址,如果拿到的是01则是小端,如果是00则是大端
	if (*p == 0)
	{
    
    
		cout << "大端存储" << endl;
	}
	else if (*p == 1)
	{
    
    
		cout << "小端储存" << endl;
	}
	return 0;
}

Die Laufergebnisse sind wie folgt:
Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/weixin_63614711/article/details/128558009
Empfohlen
Rangfolge