- ベストアンサー
C++のプログラムがわかりません
- C++のプログラムがわかりません
- この記事では、C++のプログラムの理解に関する質問について解説します。
- 特に、バイナリビットパターンとバイト単位での表示に関して詳しく説明します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
どうやら「浮動小数点数」をご存じないようですね。 まずこちらをご覧ください。 http://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0 1991.829の場合で言うと、 まずこの数値を2進数に直しますと、 11111000111.110101000011100101011000000100000110001001… となります。中途半端な数なので循環小数になってしまっています。(悪問ですね。) 続いて、小数点の位置を見ます。 1 . 1111000111110101000011100101011000000100000110001001… ここを基準として、10桁ずれたところにあります。この10は後で使うので覚えておきます。 次に、二進数には数字が1と0しかないので、最上位の数字は0でないので常に1です。 常に同じなら書く必要はないのでとってしまいます。 1111000111110101000011100101011000000100000110001001 一方、先ほどの10ですが、これを指数と呼びます。 説明は面倒なので割愛しますが、double型ではこれに1023を足した数値を記録することになっています。 10+1023(10進数) =00000001010+01111111111=10000001001(二進数) です。 最後に符号をつけます。プラスなら0、マイナスなら1です。 合わせて、 0 10000001001 1111000111110101000011100101011000000100000110001001 となり、8ビットで区切れば、 01000000 10011111 00011111 01010000 11100101 01100000 01000001 10001001 です。
お礼
お礼が遅れましたが、ご回答ありがとうございました。 すごくわかりやすい説明で納得できました。 (double型では1023を足すってのは多分約束事ですよね?)