コンピュータ

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

2020年8月10日

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

バイトオーダ(別名:エンディアン)とは、複数のバイトで構成されるデータを取り扱うときに、どのような順序で書き込むか(もしくは読み込むか)を表す順序のことです。

メモリ上にデータを記録する際や、バイト単位でデータのやり取りを行う際に使用します。

メモリは 1バイトごとにアドレスが割り当てられており、メモリの読み書きも1バイト単位で行われます。(下記表の通り、データは1バイト単位で管理されている。※データは16進数で表記)

アドレスデータ
100001
100102
100203
100304

このように複数のバイトで構成されるデータを、どのような並び順でメモリに書き込むのかを決めるのがバイトオーダです。(もしくは、メモリ上のデータをどのような順番で読み込むのかを決める)

バイトオーダ(エンディアン)の種類

スポンサーリンク

ビッグエンディアンとは

ビッグエンディアン(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ビットのレジスタにビッグエンディアンでロードするとどうなるか。

バイトアドレスデータ
1000CD
100101
100231
10034F

[答] CD01314F

最後に

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

バイトオーダとは

バイトオーダ(エンディアン):複数のバイトで構成されるデータを取り扱うときの並び順のこと

ビッグエンディアンとは

ビッグエンディアン:上位バイトから下位バイトの順に取り扱う方式

リトルエンディアンとは

リトルエンディアン:下位バイトから上位バイトの順に取り扱う方式

helpful