エンディアンについて猿でも分かる記事を書きたいな〜と思いました。(無理)
#エンディアンとは(Wiki調べ)
エンディアン(英: endianness)は、複数のバイトなどを並べる順序の種類である。一般的な用語による表現ではバイトオーダ(英: byte order)、ないしそれを一部訳して日本語ではバイト順とも言う。
#噛み砕いて説明
2進数や16進数に拒絶反応を示す方のために10進数で説明します。
エンディアンとは、だいたい「複数桁の数をどう書くか」ということだ。(バイトオーダにおいては複数バイトの数の話になるので、ちょっと違うけど、感覚はそんな感じ。)
##ビッグエンディアン
我々が普段から使ってるやつ。
大きい桁から順番に書くから「ビッグ」エンディアン。
例えば、「せん にひゃく さんじゅう よん」という数字を「1234」と書く。
昔のMacintoshなりメガドライブなりのCPUや、MIDIデータはこっち。
##リトルエンディアン
ビッグエンディアンの逆。
現在コンピュータ界では主流。
小さい桁から順番に書くから「リトル」エンディアン。
例えば、「せん にひゃく さんじゅう よん」という数字を「4321」と書く。
Intel x86とかはこっち。ビッグエンディアンよりも高速だからだ。
##ミドルエンディアン
上2つを組み合わせたようなやつ。
自分はまだ実環境では見たことがない。
例えば、「せん にひゃく さんじゅう よん」という数字を「2143」と書く。
往年のミニコンピュータの名機、PDP-11などはこれ。(私は21世紀生まれなんで知りませんけどね)
##バイエンディアン
シチュエーションによってビッグエンディアンとリトルエンディアンを切り替えられるもの。
でも実際は性能上の問題からリトルエンディアンを使うことがほとんど。
Androidスマホ、GBA、DS(ARM)や、Nintendo64、PlayStation(MIPS)はこれ。でもビッグエンディアンで動かしてるのは見たことがない。
#バイトオーダ以外のエンディアン
##ビットオーダ
通信の世界では「ビットオーダ」もある。シリアル通信(RS232CやUSB)では、1バイトのデータ(0101の並び)を下位ビットから送るか上位ビットから送るかということも問題になってくる。(大抵は規格で決まっていて、処理するのも専用デバイスだし、これに関して意識することは通信技術者以外ではまずない。)
##ワードオーダ
複数ワードにまたがるデータ(数バイトをまとめて1ワードとして扱っている感じのとき。)
UTF16における文字列の並びとかの話だが、ビッグエンディアン以外見たことがない。(「これは猫です」を英語にしたときにリトルエンディアンだと「.tac a si sihT」になるけどこうする利点はまずないし。)