ホームページ >よくある問題 >ビッグエンディアンモードとリトルエンディアンモードの違いは何ですか?

ビッグエンディアンモードとリトルエンディアンモードの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2020-12-07 12:04:3545738ブラウズ

違い: ビッグエンディアン モードでは、ビッグ エンディアン ストレージ モードとは逆に、ワード データの上位バイトが下位アドレスに格納され、ワー​​ド データの下位バイトが上位アドレスに格納されます。リトルエンディアン格納モードでは、下位アドレスにはワードデータの下位バイトが格納され、上位アドレスにはワードデータの上位バイトが格納されます。

ビッグエンディアンモードとリトルエンディアンモードの違いは何ですか?

#この記事の動作環境: Windows 7 システム、Dell G3 コンピューター。

関連する推奨事項: 「プログラミング入門

ビッグ エンディアン モードとリトル エンディアン モードの違い

C 言語には 8 ビットの char 型のほかに、16 ビットの short 型と 32 ビットの long 型があります (コンパイラによって異なります)。 -bit あるいは、32 ビットプロセッサの場合、レジスタ幅が 1 バイトよりも大きいため、複数のバイトをどのように配置するかという問題が発生するはずです。これは、ビッグエンディアン ストレージ モードとリトル エンディアン ストレージ モードにつながります。

ビッグ エンディアン モード:

ワード データの上位バイトは下位アドレスに格納され、ワー​​ド データの下位バイトは上位アドレスに格納されます。

リトルエンディアンモード:

ビッグエンディアンストレージモードとは対照的に、リトルエンディアンストレージモードでは、ワードデータの下位バイトが下位アドレスに格納されます。 、下位アドレスにワードデータの上位バイトが格納され、アドレスにはワードデータの上位バイトが格納されます。

たとえば、16 ビット幅の数値 0x1234 がリトルエンディアン モードの CPU メモリに格納される方法 (アドレス 0x4000 から始まると仮定):

メモリアドレス

0x4000

0x4001

ストレージ コンテンツ

0x34

0x12

そして大きなものエンディアンモード CPU メモリへの格納方法は次のとおりです。

メモリアドレス

0x4000

0x4001

ストレージ コンテンツ

0x12

0x34

ビッグエンディアン モードの CPU メモリの保存方法は次のとおりです:

# # メモリアドレス

#0x4000

0x4001

0x4002

0x4003

ストレージ コンテンツ

0x12

0x34

0x56

0x78

私たちが一般的に使用する X86 構造使用はリトル エンディアン モードですが、KEIL C51 はビッグ エンディアン モードです。多くの ARM および DSP はリトルエンディアン モードです。一部の ARM プロセッサでは、ハードウェアによってビッグ エンディアン モードまたはリトル エンディアン モードを選択することもできます。

注: ビッグ エンディアン方式を使用してデータを保存することは人間の通常の思考と一致しますが、リトル エンディアン方式を使用してデータを保存することはコンピュータ処理に役立ちます。

(私の理解: リトルエンディアン モードでは、下位バイトに下位ビットが配置されます)


次のコードを使用して、コンパイラがビッグ エンディアン モードであるか、それともビッグ エンディアン モードであるかをテストできます。リトル エンディアン モード:

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);
}

x0=0x11 の場合はビッグ エンディアン、x0=0x22 の場合はリトル エンディアン....


関連記事をさらに読みたい、

PHP中文网にアクセスしてください! !

以上がビッグエンディアンモードとリトルエンディアンモードの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。