ビッグ/リトルエンディアンとは、データの並び順を示す用語である。英語では名詞なのでendiannessである。
概要
16ビットコンピューターなら2バイト(=16ビット)ごと、32ビット、64ビットコンピューターならそれぞれ4, 8バイトごとにデータを処理していくが、扱う単位データ内でバイト列を先頭から順番に並べていく方式をビッグエンディアン、逆順に並べていく方式をリトルエンディアンと呼ぶ。
たとば32ビット16進数で、6789ABCD(16) (= 1,737,075,661)という数値を記述する場合、ビッグエンディアンならそのまま67 89 AB CDだが、リトルエンディアンだとCD AB 89 67となる。
あえてデータを逆順に並べるリトルエンディアンは、何らかの理由でその方が効率が良い場合に選択されることが多い。たとえば、足し算なら繰り上がりがあるので下の桁から処理したほうが効率が良い、など。
CPU
モトローラのMC68000系CPUはビッグエンディアン、インテルのx86系CPUはリトルエンディアンである。中にはARM系やPowerPCのように両者を予め選択できるシステムもある。
x86がリトルエンディアンなのは、8ビットCPUの時代に14ビットのメモリアドレス処理をしようとした時の名残らしい。
Unicode
Unicodeの文字符号化方式のうちUTF-16とUTF-32では、1文字が複数バイトで構成されるが、バイト列の並べ方にビッグエンディアンとリトルエンディアンの両方が存在する。ファイル読み込みの際にエンディアンを指定する方法以外に、ファイルの先頭にバイトオーダーマークを付加してエンディアンを自動判別させる方法がある。
リトルエンディアンがあるのは、WindowsがIntelのCPUに合わせてUnicodeを16ビットリトルエンディアン方式で内部処理していたためらしい。
通信
関連動画
下記動画はビット単位だが、このように下位の桁から処理したほうが良いアルゴリズムも存在する。
関連項目
- コンピューター
- CPU / x86 / 68k / 機械語
- 配列
- Unicode / バイトオーダーマーク
- 天邪鬼 / ひねくれ者
- ガリバー旅行記: 卵を上下どちらから割るかというのが名前の由来らしい。
- プログラミング関連用語の一覧
- 0
- 0pt