目次
バイトオーダ(エンディアン)とは
バイトオーダ(別名:エンディアン)とは、複数のバイトで構成されるデータを取り扱うときに、どのような順序で書き込むか(もしくは読み込むか)を表す順序のことです。
メモリ上にデータを記録する際や、バイト単位でデータのやり取りを行う際に使用します。
メモリは 1バイトごとにアドレスが割り当てられており、メモリの読み書きも1バイト単位で行われます。(下記表の通り、データは1バイト単位で管理されている。※データは16進数で表記)
アドレス | データ |
1000 | 01 |
1001 | 02 |
1002 | 03 |
1003 | 04 |
このように複数のバイトで構成されるデータを、どのような並び順でメモリに書き込むのかを決めるのがバイトオーダです。(もしくは、メモリ上のデータをどのような順番で読み込むのかを決める)
バイトオーダ(エンディアン)の種類
スポンサーリンク
ビッグエンディアンとは
ビッグエンディアン(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
最後に
本記事では、ビッグエンディアンとリトルエンディアンについて紹介しました。
バイトオーダとは
バイトオーダ(エンディアン):複数のバイトで構成されるデータを取り扱うときの並び順のこと
ビッグエンディアンとは
ビッグエンディアン:上位バイトから下位バイトの順に取り扱う方式
リトルエンディアンとは
リトルエンディアン:下位バイトから上位バイトの順に取り扱う方式