ビッグエンディアンとスモールエンディアンのストレージの問題 (エンディアンの問題):
CPU が異なれば、マルチバイト データを保存する方法も異なります。
1. リトルエンディアン:開始アドレスに下位バイトを格納(下位アドレッシング)
2. ビッグエンディアン: 開始アドレスに上位バイトを格納します (上位アドレス指定)
リトルエンディアンストレージ:アドレスの下位ビットはデータの下位ビットを格納し、アドレスの上位ビットはデータの上位ビットを格納します。
ビッグエンディアンストレージ:アドレスの下位ビットはデータの上位ビット格納し、アドレスの上位データの下位ビットを格納します。
図に示すように:
プログラムを使用して、CPU のエンディアン ストレージのサイズとサイズを決定できます。
#include <stdio.h>
int main(){
//通过指针判断大小端
int a = 0x12345678;
char *p = (char *)&a;
if(0x78 == *p){
printf("小端\n");
}else if(0x12 == *p){
printf("大端\n");
}
return 0;
}