許せない心理テスト

10進数の0.3を16桁2進数表現であらわすと
0.0100110011001100
でいいのでしょうか?

また10進数の0.1を2進数16桁であらわし,17桁目で0捨1入せよ.という
問題があるのですが
17桁まで表すと
0.00011001100110011
で0捨1入すると
0.0001100110011010
でいいのでしょうか?
これを10回加えると1よりは大きくなるのでしょうか?
それとも小さくなるのでしょうか?

どなたか教えてください。

A 回答 (1件)

Windowsをお使いでしたら,アクセサリ→電卓 の 表示(V)→関数電卓(S) を使ってご自身で検算することができます。


ただし一般的な関数電卓も同様ですが,2進数の小数を扱えませんから,ビットシフトを用いて整数演算をすることになります。nビット左シフトは ×(2のn乗),nビット右シフトは ÷(2のn乗)です。

(100110011001100)2÷(2の16乗) = 19660÷65536 = 約0.2999
(11001100110011)2÷(2の17乗) = 13107÷65536÷2 = 約0.0999

となりますから,どちらも正解です。

17桁目で0捨1入した結果も正しいです。17桁目は切上されたのですから,0.1よりも大きな数の方向に丸められたわけです。これを10回加算した結果は当然1よりも大きくなります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

とても分かりやすかったです。

お礼日時:2008/04/27 18:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報