-
目次(まとめ)
- ◾️ ビッグエンディアンでは、メモリアドレスが小さい方から値を配置
- ◾️ リトルエンディアンでは、メモリアドレスが大きい方から値を配置
- ◾️ 関連記事
情報処理試験で「エンディアン」について問われたんだけど、エンディアンとは一体なんですか?
エンディアンとは、メモリに値を配置していく順番の種類です。
今回の記事では、代表的なエンディアンである「ビッグエンディアン」と「リトルエンディアン」について紹介します。
ビッグエンディアンでは、メモリアドレスが小さい方から値を配置
いま、16進数で "ABCD1234" という値が与えられていて、この値をメモリに配置していくことを考えます。
メモリが4バイト(32ビット)であるとすると、1バイト(8ビット)あたり、2つの16進数を配置することができます。
つまり、0.5バイト(4ビット)あたり、1つの16進数を配置できるということです。2進数の "0000" は16進数で "0"、2進数の "1111" は16進数で "F" に対応します。
ここで、メモリのアドレスを小さい方から、"a" "a+1" "a+2" "a+3" と表現すると、ビッグエンディアンでは以下のように値が配置されます。
(a) | (a+1) | (a+2) | (a+3) |
AB | CD | 12 | 34 |
つまり、アドレスが小さい方から順番に並べる、ただそれだけです。
リトルエンディアンでは、メモリアドレスが大きい方から値を配置
ビッグエンディアンは、われわれ人間にとって理解しやすかったですが、コンピュータが理解しやすいとは限りません。
そこで、ビッグの逆の、リトルエンディアンという方式もあります。
先ほどと同じように、16進数で "ABCD1234" という値が与えられていて、この値をメモリに配置していくことを考えます。
メモリのアドレスを小さい方から、"a" "a+1" "a+2" "a+3" と表現すると、以下のように値が配置されます。
(a) | (a+1) | (a+2) | (a+3) |
34 | 12 | CD | AB |
ビッグエンディアンとは逆に、アドレスが大きい方から値が配置されていきます。
それぞれのアドレス枠の中では、もとの値の順序が維持されるので注意してください。
もし、4バイトのメモリが、2バイトずつの2つに分けられている場合には、それぞれのアドレス枠に4つの16進数を配置できるので、以下のようになります。
(a) | (a+1) |
1234 | ABCD |
関連記事
今回の記事では、情報処理試験でも問われる「エンディアン」について紹介しました。ビッグだとアドレスが小さい方から、リトルだとアドレスが大きい方から、ということを覚えておきましょう。