目次
バイトオーダ(エンディアン)とは
バイトオーダ(別名:エンディアン)とは、複数のバイトで構成されるデータを並び替えることをいいます。メモリ上に記録する際や、バイト単位でデータのやり取りを行う際に使用します。
スポンサーリンク
メモリは 1バイトごとにアドレスが割り当てられており、メモリの読み書きも1バイト単位で行われます。(以下の例の通り、データは1バイト単位で管理されている。※データは16進数で表記)
例えば「ABCD1234」のような複数のバイトで構成されるデータを、どのような並び順でメモリに書き込むのかを決めるのがバイトオーダです。(もしくは、メモリ上のデータをどのような順番で読み込むのかを決める)
バイトオーダ(エンディアン)の種類
ビッグエンディアンとは
ビッグエンディアン(big endian)とは、複数のバイトで構成されるデータの上位バイトから下位バイトの順に並び変える手法のことです。
例えば「ABCD1234(※16進数表記)」という複数のバイトで構成されるデータを、ビッグエンディアンでメモリに格納する場合は、下記の図のように、バイトアドレス1000に「AB」、1001に「CD」、1002に「12」、1003に「34」が格納されます。
リトルエンディアンとは
リトルエンディアン(little endian)とは、複数のバイトで構成されるデータの下位バイトから上位バイトの順に並び変える手法のことです。
例えば「ABCD1234(※16進数表記)」という複数のバイトで構成されるデータを、ビッグエンディアンでメモリに格納する場合は、下記の図のように、バイトアドレス1000に「34」、1001に「12」、1002に「CD」、1003に「AB」が格納されます。
エンディアンの例題
メモリへの書き込み
[問] 16進数 0145CD9F をリトルエンディアンで4バイトのメモリに配置するとどうなるか。
[答] 9F CD 45 01
メモリからの読み込み
[問] 主記憶の1000番地から、表のように4バイトの整数データが格納されている。これを32ビットのレジスタにビッグエンディアンでロードするとどうなるか。
バイトアドレス | データ |
1000 | CD |
1001 | 01 |
1002 | 31 |
1003 | 4F |
[答] CD01314F
最後に
本記事では、ビッグエンディアンとリトルエンディアンについて紹介しました。
バイトオーダとは
バイトオーダ:バイトで構成されるデータを並び替えること
ビッグエンディアンとは
ビッグエンディアン:上位バイトから下位バイトの順に並び替えること
リトルエンディアン
リトルエンディアン:下位バイトから上位バイトの順に並び替えること