K.Maebashi's BBS

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

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

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

[2067] Re:【C言語ポインタ完全制覇】バイトオーダー、向き?
投稿者:(ぱ)こと管理人
2017/12/20 00:13:05

>第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さんの他にもいるのかもしれませんし、 実のところどっちが多数派なのかもわかりませんが、本の書き手としては、 「想定読者は過去の自分自身」という視点から逃れられないものなのかもしれません。
[この投稿を含むスレッドを表示] [この投稿を削除]