K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]


新規投稿 | 開設者ホームページへ戻る | ヘルプ


[2067] Re:【C言語ポインタ完全制覇】バイトオーダー、向き?
返信


投稿者:(ぱ)こと管理人
2017/12/20 00:13:05

Link:
>第1版p135, 第2版p156の、byteorder.cの実行直後の文、『私の環境では「0x12345678」と
>いう値は、メモリ上に、逆向きに配置されているようですね。』とあるのですが、
>何とは「逆向き」に、なのかがわかりません。何と逆向きなのでしょうか?

「0x12345678」という16進の表記と逆向き、という意味で書いています。

>(ぱ)さんの環境(little endian)で、78->56->34->12と表示されている、
>というのは、下の位から上の位にメモリアドレスが増えていっているので、
>僕には、逆ではなく【順に】に思えるのです。

うーん、主観の問題とは思いますが、どうなんでしょう。
「下の位を先にメモリに格納する」というのは、コンピュータの事情としては
わかるケースもありますが、通常、人間は、数字を印刷・表示した状態の順序で
意識しているのではないでしょうか。過去、この話を新人君やお客様にしたことは
何度かありますが、私の経験した範囲では、「へー、逆なんだ」という反応でした。
ポインタ完全制覇の初版が出てから17年、この点で違和感を表明したのは
knwifuruさんが最初です(もちろん、表明しなかっただけで、違和感を感じていた人は
いたのかもしれません)。

>しかし、もともと、endianというのは、「卵の尖った側(小さい側)から(先に)食べるか、
>丸い側(大きい側)から食べるか」=「bit/byte列のlower bits側が先に(lower addressに)
>置かれるか、higher bitsが先に置かれるか」という事のようなので、
>数字を印刷・表示した時・読んだ時に先に・早く出てくるかどうか?で議論をすると、
>混乱すると思うのですが、いかがでしょうか?

まあこれはendianを知らない人向けの説明なので、「もともとendianというのは〜」で
説明してもあまり意味はなく、「数字を印刷・表示した時・読んだ時」の順と
逆になっていることから、「そんなこともあるんだ、へー」と思ってもらえば
よいかと思っています。
「へー、逆なんだ」と思わない人は、knwifuruさんの他にもいるのかもしれませんし、
実のところどっちが多数派なのかもわかりませんが、本の書き手としては、
「想定読者は過去の自分自身」という視点から逃れられないものなのかもしれません。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[ より新しい投稿] [ より古い投稿]