Hatena Blog Tags

エンディアン

(コンピュータ)
えんでぃあん

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

このタグの解説についてこの解説文は、すでに終了したサービス「はてなキーワード」内で有志のユーザーが作成・編集した内容に基づいています。その正確性や網羅性をはてなが保証するものではありません。問題のある記述を発見した場合には、お問い合わせフォームよりご連絡ください。

ネットで話題

もっと見る

関連ブログ