- ベストアンサー
2進数による表現
「10進数(3.3)を6桁程度の2進数に変換せよ。」 という問題で、この時(3.3)を遂次2倍していきますよね。 この問題の場合、105.6の-5乗まで計算して、 これを四捨五入して106にして2進数に変換していくのは分かるのですが・・ この時、出される数字(この場合3.3)によって 2倍していく数が異なりますよね? 今回は-5乗まで計算していますが、10進数(4.6)の場合だと-6乗まで計算しています。 この計算の違いはどこで判断すればよいのでしょうか? 教えていただけたら幸いです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず小数点で区切って考えます 整数が3なので11 少数が0.3なのでこれを2進数にします 少数を2進数にするには小数部分だけ2倍にしていきます 0.3 * 2 = 0.6 + 0 0.6 * 2 = 0.2 + 1 ※ 0.2 * 2 = 0.4 + 0 0.4 * 2 = 0.8 + 0 0.8 * 2 = 0.6 + 1 ※ 0.6 * 2 = 0.2 + 1 ※の間を繰り返してるので無限小数になります。 2倍にしたときの整数の部分を並べていくと小数になるので . . 6.6(10)=11.01001(2) となります (みにくいですが無限小数を表す・が入ってます)
その他の回答 (1)
>この問題の場合、105.6の-5乗まで計算して、 >これを四捨五入して106にして2進数に変換していくのは分>かるのですが・・ >この時、出される数字(この場合3.3)によって >2倍していく数が異なりますよね? >今回は-5乗まで計算していますが、10進数(4.6)の場合 >だと-6乗まで計算しています。 上の部分はまったく自分は理解できないのですが 小数点以下の2進数の求め方は 小数点以下を2倍していくわけです。 そして1を超えたらそこの桁は1とします。 たとえば3.3なら0.3だけに注目し 0.3 ×2 0.6 ←0 ×2 1.2 ←1 1を超えたので ×2 0.4 ←0 1を引いてます ×2 0.8 ←0 ×2 1.6 ←1 1を超えました。 よって3.3=(11.01001)となると思いますが・・・ 説明が下手ですが補足があればおっしゃってください。
お礼
回答有難うございました!
お礼
回答有難うございました!