『Cプログラミング専門課程』目次第4章メモリ

4.2 バイトオーダー (2)


最上位から順にメモリに入れるのと、最下位から入れるのでは全くの逆です が、通常プログラムをしている場合、この違いを考慮する必要はありません。 パソコンとUNIXマシンをネットワークで繋いで、互いにデータを交換するよう な、 80X86系と680X0系のコンピュータを混在させて使用する場合には注意す る必要があります。

次図のように、680X0系のコンピュータのlong型のデータを80X86に送り、 80X86系側でも、メモリのアドレス順に、12、34、56、78と入れると、数値の メモリ内の記憶のされ方は同じです。しかし、この同じ「12、34、56、78」の 4バイトをどういう数値と解釈するかは全然異なります。12345678だったもの が、 78563412になってしまいます。

long型について説明しましたが、short型、int型の場合も同様に異なります。 char型は1バイトなので、同じです。

バイトオーダーの違いは、バグの症状の違いになって現れます。 680X0系の コンピュータで開発し、バグもなくなったと思っていたプログラムを 80X86系 のコンピュータに移植した、あるいは逆方向に移植したら全然動かなかった、 ということがあります。本当はバグであるにも関わらず、680X0系ではバグの 症状が出ず、80X86系のときにバグが出ることがあります。もちろん、逆のこ ともあります。詳しいバグの例は、「5.8破壊の影響」で説明します。

数値は、10進数でも、16進数でも、2進数でも、左から右に向かって書くの が一般的です。また、メモリの内容を1バイト単位で示す時も、やはり左から 右に向かって書くのが自然です。すると、80X86系では16進数の12345678を図示 すると、

となってしまって分かりにくいですね。それで、メモリを1バイト単位に横並 びに示すとき、

としているものもあります。このように逆順にすると、数値との対応が分かり やすくなります。

⇒⇒⇒⇒次ページへ


Copyright1996 Hirofumi Fujiwara. No reproduction or republication without written permission
『Cプログラミング専門課程』目次第4章メモリ