エンディアン 【endianness】 バイトオーダー / byte order / エンディアンネス

概要

エンディアン(endianness)とは、複数のバイト(多バイトマルチバイト)で構成されるデータを記録・伝送する際に、どのような順番で各バイトを記録・伝送するかを表す順序のこと。

コンピュータではメインメモリ1バイトずつデータを並べていくが、32ビット(4バイト)の整数型のように複数のバイトを繋げて全体で一つのデータを表す場合には、メモリアドレス(番地)の小さい側に上位桁側のバイトを置くか、逆に下位桁側から並べるか、ルールを決めておかなければならない。

この配置順のルールを「エンディアン」(endianness)あるいは「バイトオーダー」(byte order)という。最上位バイトから最下位バイトに向けて順に記録・送信する方式を「ビッグエンディアン」(big endian)、最下位バイトから最上位バイトに向けて順に記録・送信する方式を「リトルエンディアン」(little endian)という。

ちなみに、「エンディアン」の名称は、「ガリバー旅行記」の小人の国のエピソードに登場する、ゆで卵を丸い側(big end)から割る人々(ビッグエンディアン)と、尖った側(little end)から割る人々(リトルエンディアン)に由来するとされる。

例えば、16進数で「11223344」と表される4バイトデータメインメモリに保存する際、これをメモリの下位アドレスから上位アドレスに向けて「11」「22」「33」「44」の順に書き込んでいくのがビッグエンディアン、「44」「33」「22」「11」の順に書き込むのがリトルエンディアンとなる。

CPUにおけるエンディアン

メモリ上のエンディアンはCPUマイクロプロセッサ)の種類によって規定されており、例えば米IBM社メインフレームなどはビッグエンディアンを、米インテルIntel)社のx86系プロセッサなどはリトルエンディアンを採用していることで知られる。

稀に、「33」「44」「11」「22」などと前半と後半を入れ替える「ミドルエンディアン」(middle endian)と呼ばれる方式や、ビッグエンディアンリトルエンディアンを切り替えて使用できる「バイエンディアン」(bi-endian)と呼ばれる方式のプロセッサも存在する。

通信におけるエンディアン

通信プロトコルファイル形式フォーマット)でも、送り順や並び順で上位側と下位側のどちらが先かを定めたエンディアンが規定されていることがあり、プロセッサの種類に関わらず、仕様で定められたエンディアンでデータを取り扱うようソフトウェア側で対応しなければならない。

例えば、TCP/IPでは複数バイトデータビッグエンディアンで取り扱うと規定(ネットワークバイトオーダー)されている。Unicodeのように、ファイルの先頭にエンディアンを指定する特殊な符号BOMバイトオーダーマーク)を書き込むよう規定しているフォーマットもある。

(2023.12.14更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる