コンピュータ

エンディアンとは(ビッグエンディアンとリトルエンディアン)

バイトオーダ(エンディアン)とは

バイトオーダ(別名:エンディアン)とは、複数のバイトで構成されるデータを並び替えることをいいます。メモリ上に記録する際や、バイト単位でデータのやり取りを行う際に使用します。

スポンサーリンク

メモリは 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

最後に

本記事では、ビッグエンディアンとリトルエンディアンについて紹介しました。

バイトオーダとは

バイトオーダ:バイトで構成されるデータを並び替えること

ビッグエンディアンとは

ビッグエンディアン:上位バイトから下位バイトの順に並び替えること

リトルエンディアン

リトルエンディアン:下位バイトから上位バイトの順に並び替えること

よろしければ記事の評価をお願いします

© 2020 ITを分かりやすく解説