• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++のプログラムがわかりません。)

C++のプログラムがわかりません

このQ&Aのポイント
  • C++のプログラムがわかりません
  • この記事では、C++のプログラムの理解に関する質問について解説します。
  • 特に、バイナリビットパターンとバイト単位での表示に関して詳しく説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.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 です。

tkdtoto7
質問者

お礼

お礼が遅れましたが、ご回答ありがとうございました。 すごくわかりやすい説明で納得できました。 (double型では1023を足すってのは多分約束事ですよね?)

関連するQ&A

専門家に質問してみよう