コンピュータが複数個の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でしょう。
あとがき
メモリにデータを配置する場合はハードウェアで勝手に吸収されるので気にしなくていいです。
対して自身でバイナリデータを作るなど、直接バイナリデータを扱う場合は必須の知識になります。
◆ コンピュータサイエンスに関する学習コンテンツ
[ComputerScience] 基礎から学べるコンピュータサイエンス
コンピュータサイエンスを学習できる記事をまとめました。このページから関連する記事にアクセスできます。 日本語では情報工学と言って、コンピュータに関する基礎知識です。たぶん、情報系の大学や専門学校で習います。正直、現代のコンピュータはプログラミングを含めて難易度が下がってるので、この辺の知識が無くても普通に生きていけます。 では、なぜ学ぶのでしょうか。それは単に知ってることで有利な場面が多いからです。理解できなくても1回学ぶと記憶に残ります。何も知らないゼロよりも価値があるとは思いませんか? ...
この記事は参考になりましたか?
コメント