【えんでぃあん】

エンディアン とは?

最終更新:
💡 同じ数をしまうときの「バイトの並べ方」

複数バイトで表す値を、どのバイトから並べるかという順序。上位バイトから並べるビッグエンディアンと、下位バイトから並べるリトルエンディアンが代表的です。

📌 このページのポイント
バイトの順序を、同じ数で比較 符号なし16ビット整数 0x1234 上位バイト=12 / 下位バイト=34 小さいアドレス → 大きいアドレス ビッグ エンディアン リトル エンディアン 12 34 34 12 同じ値でも、バイトの位置が違う 約束どおり読めば、どちらも4660
各枠は1バイト、数値は16進数。小さいアドレスから見た0x1234の配置を比較。各バイト内のビットや文章全体を逆順にする話ではない。
ひよこ ひよこ
エンディアンって、何の順番のこと?
ペンギン先生 ペンギン先生
複数バイトで表す値を保存したり送ったりするときの、バイトの順番だよ。メモリなら小さいアドレス側から、通信なら送る順に、どのバイトを先にするかを決めるんだ。
ひよこ ひよこ
数字を使って教えてほしいな。
ペンギン先生 ペンギン先生
符号なし16ビット整数の0x1234は、上位バイトが12、下位バイトが34だよ。ビッグエンディアンは12 34、リトルエンディアンは34 12と並べるんだ。どちらも約束どおり読めば10進数の4660になるね。
ひよこ ひよこ
間違った順序で読んだらどうなるの?
ペンギン先生 ペンギン先生
12 34をリトルエンディアンとして読むと0x3412、10進数の13330になってしまうよ。受け手と送り手で順序をそろえる必要があるんだ。ファイル形式が決めた順序と、CPU内部の順序が同じとは限らないね。
ひよこ ひよこ
リトルエンディアンなら、文章も逆さにするの?
ペンギン先生 ペンギン先生
そうではないよ。たとえばUTF-16LEは16ビット単位ごとに下位バイトを先にするので、文章全体の順を逆転させないんだ。UTF-8はバイト単位の表現で、ビッグ・リトルを切り替える方式ではないよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「エンディアン」って出てきたら「複数バイトの値をどちら側から並べるか」と思えばだいたいOK!
📖 おまけ:英語の意味
「Endianness」 = バイトの並び順を表す性質
💬 技術文書では、big-endianとlittle-endianという名前で上位・下位のどちらを先に置くかを区別するんだよ

参考資料

← 用語集にもどる