- ベストアンサー
10進数を16桁2進数になおす問題について
10進数の0.3を16桁2進数表現であらわすと 0.0100110011001100 でいいのでしょうか? また10進数の0.1を2進数16桁であらわし,17桁目で0捨1入せよ.という 問題があるのですが 17桁まで表すと 0.00011001100110011 で0捨1入すると 0.0001100110011010 でいいのでしょうか? これを10回加えると1よりは大きくなるのでしょうか? それとも小さくなるのでしょうか? どなたか教えてください。
- みんなの回答 (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よりも大きくなります。
お礼
回答ありがとうございます。 とても分かりやすかったです。