Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxシステムのサイズモード

Linuxシステムのサイズモード

  
 

ビッグエンドモード

いわゆるビッグエンディアンモードとは、データの下位ビット(つまり、重みの小さい後者のビット)がメモリの上位アドレスに格納され、データの上位ビットがメモリに格納されることを意味します。メモリの下位アドレスでは、このような格納モードはデータを文字列として処理するのといくらか似ています。アドレスは小さいものから大きいものへ、そしてデータは高いものから低いものへと増えます。

Little Endian

リトルエンディアンと呼ばれるモードは、データの下位ビットがメモリの下位アドレスに格納され、データの上位ビットがメモリの上位アドレスに格納されることを意味し、アドレスレベルとデータビットの重みを効果的に組み合わせます。上位アドレス部分は高い重みを持ち、下位アドレス部分は低い重みを持ちます。これは私たちの論理的な方法と一致しています。

サイズと終了モードがあるのはなぜですか?

サイズと終了モードがあるのはなぜですか?これは、コンピュータシステムではバイト単位で、各アドレス単位が1バイトに対応し、1バイトが8ビットであるためです。ただし、C言語の8ビットcharの他に、16ビットshort型、32ビットlong型(特定のコンパイラによって異なります)、および8ビットを超えるプロセッサ(16ビットや32ビットなど)があります。プロセッサは、レジスタ幅が1バイトより大きいので、複数バイトの並べ方に問題があるはずです。その結果、ビッグエンディアンのストレージモードとリトルエンディアンのストレージモードが発生します。たとえば、16ビットのshort型x、メモリ内のアドレスは0x0010、xの値は0x1122の場合、0x11が上位バイト、0x22が下位バイトになります。ビッグエンディアンモードでは、下位アドレスに0x11、つまり0x0010を、上位アドレスに0x22、つまり0x0011を設定します。正反対のリトルエンディアンモード。私たちのよく使われるX86アーキテクチャはリトルエンディアンモードですが、KEIL C51はビッグエンディアンモードです。多くのARMとDSPはリトルエンディアンモードです。一部のARMプロセッサは、ビッグエンディアンまたはリトルエンディアンとしてハードウェアによって選択することもできます。

テスト:

#include< stdio.h>

#include< sys /types>

main()

{

int x = 0x12345678; /* 305419896 * /

unsigned char * p =(char *)& x;

printf("%0x%) 0x%0x%0x"、xp [0]、xp [1]、xp [2]、xp [3]);

}

出力:78 56 34 12

説明はもう少しで終わりです!反対の方法はビッグエンディアンです。
zh-CN"],null,[1],zh-TW"]]]

Copyright © Windowsの知識 All Rights Reserved