Endianness (エンディアン)
エンディアン (もしくはバイト順) は、コンピューターが数字を表現するために各バイトを構成する方法を説明するものです。
メモリの個々の領域にはインデックス、もしくはアドレスが付与されています。各バイトには 8 ビット (つまり 0x00
から 0xff
まで) の数値しか保存できないため、それ以上大きな値を保存するには 1 バイトよりも大きな領域を予約しなければなりません。1 つの数値における複数のバイトの順序で断然最もよく使われているものはリトルエンディアンで、インテルのすべてのプロセッサーで使用されています。リトルエンディアンは小さいバイトから大きいバイトの順で (つまり、もっとも小さなバイトを最初または最下位のアドレスに) 格納するので、ちょうどヨーロッパの日付の書き方 (例えば 31 December 2050) と同様です。
当然、ビッグエンディアンは逆の順序で、 ISO 日付形式 (2050-12-31) と同様です。ビッグエンディアンはよく「ネットワークバイトオーダー」と呼ばれますが、これはインターネット標準では通常、標準 UNIX ソケットレベルからウェブバイナリデータ構造に至るまですべて、データをビッグエンディアンで格納することを要求しているためです。また、 68000 系や PowerPC のマイクロプロセッサーを使用した古い Mac では、ビッグエンディアンを使用していました。
例えば 0x12345678
(十進法では 305 419 896) は、それぞれ次のように表現されます
- リトルエンディアン:
0x78 0x56 0x34 0x12
- ビッグエンディアン:
0x12 0x34 0x56 0x78
- ミックスドエンディアン (古く非常に稀):
0x34 0x12 0x78 0x56