- ベストアンサー
小数の10進法→n進法の変換について
小数の10進法→n進法の変換の時 だいたい参考書に書かれているのは、 例えば0.8125という10進法の数を2進法表記で表したい場合 この0.8125を1/2で割っていき求めていくやり方だと思うのですが 分数の形のまま、求めることは出来ないのでしょうか? 例えば 0.8215 という10進数の小数は 分数の形にすると 8/10^1 + 2/10^2 + 1/10^3 + 5/10^4 = 8125/10000 この8125/10000 という状態から 1/2を使って 2進法表記を求めることは出来るのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
分数を使ってですか。敢えてやってみましょう。 8125/10000=5000/10000+2500/10000+625/10000 =1/2+1/4+1/16 これにより、2進数表記すると、0.1101 こんなところですね。 分母に分子が整数になるような10^nを置く。その分母の2分の1、4分の1、8分の1…を分子にしたものを足していくが、元の分子よりオーバーすれば足さない。この場合は、1250を足してませんね。 この場合はうまくいきましたが、実際には全ての10進数が2進数に化けるわけではありません。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
8125/10000 の分子、分母を625で割って既約分数にすると 13/16 =13/(2^4) 桁を合せて2進数表記すると 01101/10000 =0.1101 と、分母が2のべき乗になれば簡単ですが、そう都合良くなってはくれません。 (例: 0.1 = 1/10 はどう変形しても a/(2^n)の形にはなってくれません(a,nは有限桁の自然数)) また、この例ではあっさりと 13→1101としましたが、13→16進のD→1101と瞬時に変換できる「情報工学系の常識」が身に付いているからであって、もっと大きな数値だったら、以前から出ている「2で割ったあまり」で10進→2進変換しないとわかりません。 結局、計算の手間は一緒です。 下手なこと考えるより、「小数部を2倍したときの整数部を並べる」のが早いです。
お礼
みなさんありがとうございます。 理解することが出来ました。