コンピュータが複数個のbyteを扱う場合、そのbyteを並べる順番にルールがあります。
これはバイトオーダ(byte order)とも呼ばれていて、大切な知識になります。
エンディアン (endian) の概念
2byte以上から構成される数値を並べる時、そのbyteを最上位から並べるか最下位から並べるかのルールです。
よくメモリにデータを配置する場合を例に説明されてますが、あくまでルールなので、メモリに限った話ではありません。
また、1byteのデータを扱ってる分には関係なく、2byteや4byteなど、複数byteで構成されたデータを扱う場合に影響します。
正直、全く分かってません。
例えば10進数で287,484,603があったとして、これは4byteの0x11, 0x22, 0xAA, 0xBBで表現されるよ。
この4byteのデータは1byteごとに配置されるんだけど、その時に0x11から並べるか、0xBBから並べるかだよ。
普通に上から順番に並べちゃ駄目なんですか?
元々はCPUがデータを配置する時にどうやったら効率がいいか的なやつだよ。
このルールには2種類あって、それぞれビッグエンディアンとリトルエンディアンと呼ばれるんだ。
違うことの利点ってあるんですか?
さぁ、価値観の違いでは。正直どっちもどっちだよ。
ビッグエンディアン (big endian)
最上位のbyteから並べる方式です。
リトルエンディアン (little endian)
最下位のbyteから並べる方式です。
バイエンディアン (bi endian)
あまりにも不毛な争いが続いた結果、ビッグエンディアンとリトルエンディアンの切り替えが可能なCPUが登場してます。
その仕組みはバイエンディアンと呼ばれ、採用してるCPUで最も有名なのはARM系CPUでしょう。
あとがき
メモリにデータを配置する場合はハードウェアで勝手に吸収されるので気にしなくていいです。
対して自身でバイナリデータを作るなど、直接バイナリデータを扱う場合は必須の知識になります。
◆ コンピュータサイエンスに関する学習コンテンツ
この記事は参考になりましたか?
コメント