違い: ビッグエンディアン モードでは、ビッグ エンディアン ストレージ モードとは逆に、ワード データの上位バイトが下位アドレスに格納され、ワード データの下位バイトが上位アドレスに格納されます。リトルエンディアン格納モードでは、下位アドレスにはワードデータの下位バイトが格納され、上位アドレスにはワードデータの上位バイトが格納されます。
#この記事の動作環境: 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 |
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 サイトの他の関連記事を参照してください。