スマートフォン用の表示で見る

エンディアン

endian】(「ガリバー旅行記」の、卵はどちらの端から割るのが正しいかという論争からリリパット国で内戦が勃発したという記事にちなむ)

コンピューターが複数のバイトにまたがる数値を扱う方法についていう語。位の大きい数字を低位のバイトに置く流儀をビッグエンディアン(big endian)といい、68000系やPowerPCなどが採用している。一方、位の大きい数字を上位のバイトに置く流儀をリトルエンディアン(little endian)といい、主にIntelマイクロプロセッサが採用している。

ビッグエンディアンは普通に16進数を表記した並び方と等しいので、ハードウェアに関する教科書などではビッグエンディアンで解説していることが多い。

10進数291のバイトの並び(16ビット16進数表記):

ビッグエンディアン $01 23

トルエンディアン $23 01

16進数      (123)16

ビッグエンディアンは、人間が直接16進数表記でメモリ内部を読むときには優れた方式である。しかしながら、多バイト長ワード内部のビット位置表現との整合性が悪い欠点を持つ。たとえば、0x200番地におかれている16bitワードのbit4はどこにあるかを考えてみると、この問題がよくわかる。

16レジスタ内部の値 $0010 (bit4のみが1)

ビッグエンディアン $00 $10

トルエンディアン $10 $00

8レジスタ内部の値 $10 (bit4のみが1)

ビッグエンディアン $10 $xx

トルエンディアン $10 $xx

ビッグエンディアンでは、ワード長が変わるとメモリ上のビット位置が変わる。しかし、リトルエンディアンではそのようなことはない。


一方、TCP/IPプロトコル群ではネットワークバイトオーダーはビッグエンディアンと規定されている為、送出するパケットを生成する際に使用するライブラリ関数でのオーバーヘッドはリトルエンディアン環境の方が大きい事が多い。