エンディアン(endian)
(1999/04/09 [金])
自作プログラムが出力したあるデータを他のマシンに移動し、そのデータを読み込もうとしたら読めないということが往々にしてあります。このような問題が発生する一つの原因がエンディアン(endian)の違いによるものです。エンディアンとは、複数のバイト長の整数表現におけるバイト順の事を言います。このエンディアンは二つに分けることができます。一つは、Big-Endian(または big endian)、もう一つは、Little-Endian(または、little endian)です。
では、ここで例を示しましょう。今 0x12345678 という値があったとします。これをメモリに格納するときに、どのようなバイト順に格納するかというのがエンディアンです。例えば、この値がアドレスの低位から、0x12 0x34 0x56 0x78 の順番に格納されるのを big endian といい、0x78 0x56 0x34 0x12 の順に格納されるのを little endian と言います。big endian は、モトローラ社の 68000 シリーズなとに採用されている方式で、またネットワークでは主に big endian が使われています。little endian では インテル社 の 80x86 シリーズなどが有名なところです。
最後に表で簡単にまとめて終わりにしましょう。
参考:Endian FAQ
では、ここで例を示しましょう。今 0x12345678 という値があったとします。これをメモリに格納するときに、どのようなバイト順に格納するかというのがエンディアンです。例えば、この値がアドレスの低位から、0x12 0x34 0x56 0x78 の順番に格納されるのを big endian といい、0x78 0x56 0x34 0x12 の順に格納されるのを little endian と言います。big endian は、モトローラ社の 68000 シリーズなとに採用されている方式で、またネットワークでは主に big endian が使われています。little endian では インテル社 の 80x86 シリーズなどが有名なところです。
最後に表で簡単にまとめて終わりにしましょう。
endian | 値 0x12345678のメモリ表現 ←低位アドレス | 採用例 |
---|---|---|
big endian | 0x12 0x34 0x56 0x78 | モトローラ社の 68000 シリーズ DEC PDP10 IBM 360 など |
little endian | 0x78 0x56 0x34 0x12 | インテル社 の 80x86 シリーズ DEC PDP11 VAX Alpha など |
参考:Endian FAQ
by seclan