Intel の CPU といえばリトルエンディアン。エンディアンといえばインディアン。インディアンといえばインド人。それなのにアメリカにいたりする。
来年から Macintosh は Intel の CPU になるという(nlog(n): Intel を選択した Apple の今後の戦略を予想する)。私は今では喜んで Intel を使っているが,Intel CPU に関しては嬉しくない思い出もある。Intel が採用していたメモリのバイトオーダーがリトルエンディアンだったからである。もう1つは,メモリが 64 KB で分割されていたことがあると思ったのだが,これは勘違いだったらしい(Intel 8086はメモリが64Kバイト単位で分割され扱いにくかった というのはデマである)。しかしそう言われても,68000 はプレーンで広大なメモリ空間を持っていて,8086 よりも扱いやすかったと感じたのは何故だろうか。
さて,リトルエンディアンと言われると,思わず「インディアンが通る~アッホイアッホイアッホイホイ~」と歌ってしまう。「インディアン嘘つかない」のインディアンである(インディアンの画像は free native american indian clipart images より)。もちろん,インディアンとエンディアンは違うものである。それもこれもそもそもはコロンブスが悪い。インドに上陸したと思って,住んでいる人たちを「インディアン(インド人)」と呼んでみたら,実はアメリカ大陸だったという勘違い。そんなことがあったからインディアンはアメリカにもインドにもいることになってしまったのだ。勘違いと言えば Macintosh もそうである。Apple はリンゴだから,製品にリンゴの品種名をつけようと思って,「じゃあマッキントッシュにしよう」ということで Macintosh と名づけてしまった。しかし,リンゴの品種名は McIntosh だった。発音をたよりにつけてしまったのだ。Macintosh はリンゴの品種名ではない(マッキントッシュ - Wikipedia)。この世は勘違いで成り立っているのだ。
話は少し真面目なところへ戻って,コンピュータでのエンディアンの話。エンディアンにはビッグエンディアンとリトルエンディアンがある。多バイト長のデータをメモリ上でどう表現するかの違いである。例えば,16進で 0x1234 という2バイトのデータをメモリに格納するとしよう。ビッグエンディアンの CPU では,そのまま 0x1234 と格納されるのに対し,リトルエンディアンは 0x3412 と格納するのである。天邪鬼(アマノジャク)である。メモリ上の表現だけならいいのだが,ファイルに保存するときもこの順序は保たれたままになる。したがって,ビッグエンディアンとリトルエンディアンの2種類のコンピュータでデータを交換しようとすると,いちいち変更しなければならないのだ。面倒臭い。それだけならまだしも,同じソースコードでありながら,環境によって実行結果のファイルがまるで違うということが起こりうる(C 言語の場合)。
リトルエンディアンは Intel だけかと思ったら DEC 社の VAX もそうだったのね。とすると Unix とリトルエンディアンの関わりは案外深いのかも。ちなみに,ビッグエンディアンとリトルエンディアンのどちらでもOKなものは「バイエンディアン」と呼ばれる。バイセクシャルなんかと同じですな。
エンディアンについて調べていたら,ASCII24 - アスキー デジタル用語辞典 - エンディアン にエンディアンの由来が解説されているのを見つけた。
Endianという呼び方は、もともとはガリバー旅行記に出てくる、ゆで卵をどちらの端の方から最初に割るかという議論に由来している。物語中では、大きな方の端から割る人々はBig Endian、尖った方の端から割る人々はLittle Endianと呼ばれていた(-ianは「~な人々」を表す接尾辞)。これから転じて、MSB (most significant bit; 最上位ビット) が上位アドレスにあるのがBig Endian、LSB (least significant bit; 最下位ビット) が上位アドレスにあるのがLittle Endianと呼ばれるようになった。
こういうことか。この場合の卵はコロンブスの卵ではないのね(卵の画像は free Egg clipart pictures より)。
そうかそうか,ゴジラ松井とリトル松井みたいなものか(違うな)。
Posted by n at 2005-06-09 23:48 | Edit | Comments (2) | Trackback(0)
Master Archive Index
Total Entry Count: 1957
こういうネタ、好きです。これからもお願いします。
Posted by: calc at June 10, 2005 11:11>ゴジラ松井とリトル松井みたいなものか(違うな)。
このつぶやきは、けっこう考えた(悩んだ?)のでは?
壊れぎみの記事に反応していただきありがとうございます。どうやってオチをつけようかと考えあぐねた挙句,リトル松井となりました。
Posted by: n at June 10, 2005 23:53そういえば,calc さんがコメントをつけてくれたのは,ちょうど一年前の6月10日の記事でしたね(リーマン予想)。
http://nlogn.ath.cx/archives/000192.html
今なら「サラリーマンの予想?」なんかで書き出すかも,と思いました。