![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
小数点を含んだ実数の、10進数から2進数への変換のやり方がよくわかりません。できるときとできないときがあります。たとえば、
(0.1)_10 = (0.0001100110011・・・)_2
※(A)_xとは、数値Aのx進数表現というイミです。以下もこの表現を使います。
となるらしいですが、どうやればいいのでしょうか?わかりません。
また、ついでに聞いておきたいことがもう一つあります。小数点を含まない数値の
変換も教えていただきたいです。
たとえば今までぼくは、(101)_10を2進数に変換するのに、
(101)_10 = (100 + 1)_10 = ( 2^2・25 + 1 )_10
= ( 2^2・( 2^3・(2 + 1) + 1 ) +1 )_10 = (2^6 + 2^5 + 2^2 + 2^0 )_10
= (1100101)_2
などという、めんどくさいことをやっていたのですが、もっとスマートなやりかたはないでしょうか?
コンピュータもいちいちこんなやり方でやっていたら、計算量多すぎてやってられないような気がするので、きっとあると思うんですけど…簡潔なアルゴリズム…
No.7ベストアンサー
- 回答日時:
小数の場合は、「イメージ」よりも「位取り記数法」で考えたほうが早そうです。
まず、2進数→10進数のほうが考えやすいのでこちらから。
(0.101)_2を10進数に直すといくらになるかはおわかりですか?
答えは、1*(1/2) + 0*(1/4) + 1*(1/8) = 5/8 です。
(表記として適当ではないですが)ある2進数を(0.abcdef...)_2と文字置きすると、
(0.abcdef...)_2 = a/2 + b/4 + c/8 + d/16 + e/32 + f/64 + …
この両辺をおもむろに2倍すると、右辺から考えて
a +( b/2 + c/4 + d/8 + e/16 + …) = a_2 + (0.bcdef...)_2 = (a.bcdef...)_2 です。
回りくどい説明ですが、これは「2進数では値を2倍すると位が1つずれる」という説明そのものです。
#3でwogotaさんが書かれた求め方についての解釈は次のとおりです。(ていうか文字で書いただけやけど^^;)
(0.1)_10 = (0.abcdefg...)_2とおくと、
両辺2倍 (0.2)_10=(a.bcdefg...)_2 よりa=0
両辺2倍 (0.4)_10=(b.cdefgh...)_2 よりb=0
両辺2倍 (0.8)_10=(c.defghi...)_2 よりc=0
両辺2倍 (1.6)_10=(d.efghij...)_2 よりd=1, (0.6)_10=(0.efghij...)_2
両辺2倍 (1.2)_10=(e.fghijk...)_2 よりe=1, (0.2)_10=(0.fghijk...)_2
ここで、(0.bcdefg...)_2 = (0.fghijk...)_2 より
f=b, g=c,... と循環することが読みとれます。
即ち(0.1)_10 = (0.0<0011>)_2(<0011>とは 0011 0011 0011 …と循環する、の意味)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_04.png?5a7ff87)
No.6
- 回答日時:
No.3のwogotaさんの回答で、あってると思います。
あえて付け加えるとすれば、
>小数点を含んだ実数の、10進数から2進数への変換のやり方がよくわかりません。できるときとできないときがあります。
とありますが、例であげている(0.1)_10 などは2進数で表せない数の代表的な一例です。
実際、コンピュータでもこれが原因で誤差が出ることがあります。
ありがとうございました。
>コンピュータでもこれが原因で誤差が出ることがあります。
試してみました。0.00000001490…みたいになりました。
P.S.
もし暇で、かつやる気になってくれたら、#3の方が紹介してくれた小数点を含んだ数値の変換アルゴリズムの説明をおねがいします。
No.5
- 回答日時:
整数値の変換について、皆さんがすでに書かれている導出式の「イメージ」を極めて俗っぽくかくとこんな感じです。
2進数の世界の人達は、1円玉が2枚たまると2円玉1枚と交換できます。(次の位に進むということ)
同様に2円玉2枚で4円玉に、4円玉2枚で8円玉に。。。となります。
よって、1円玉101枚を持っている状態から、
101÷2=50余り1 によって、2円玉50枚と1円玉1枚
50÷2=25余り0によって、50枚ある2円玉が4円玉25枚に。
とやっていくと、64円、32円、4円、1円玉が1枚ずつになる。
これを2進数の世界では、(1100101)_2と書く、という感じです。
余りを逆に並べるとよいというのは、こんな仕組みを押さえておけば、詰め込み暗記にはならなくてよいと思います。
小数点の数値については。。。俗っぽい表現は難しいですなぁ。^^;
うまいっっ!
スバラシク解りやすかったです。ありがとうございました。
小数点を含んだ数値はどう理解すればいいんですかね...
とりあえず、kony0さんが整数値について説明してくれたアイディアの
方面から自分でもアプローチしてみますけど、今ちょっと考えた限りではとりあえず解らないので、暇でかつ、やる気になってくれたらお願いします。
No.4
- 回答日時:
No.#2のRIO-Freakです。
『10進数and2進数』で検索したら、小数の変換法が載っていました。見てみてください。
参考URL:http://cuvier.center.osakafu-u.ac.jp/lecture99/l …
No.3
- 回答日時:
題にあるように、101_10について考えてみましょう。
101=1×10^2+0×10^1+1×10^0
(^は、べき乗とします。つまり、10^2=10×10=100)
というように、数字を分解できます。
また、これらの数字を1つずつ求めるとした場合、
101÷10=10余り1
10÷10=1余り0
1÷10=0余り1
というように、考えることが出来ます。(この方法は、後述の考え方を
逆さにしているだけだったりします。)
ということで、割る数を2にすると、余りの数字から2進数に出来ます。
101÷2=50余り1
50÷2=25余り0
25÷2=12余り1
12÷2=6余り0
6÷2=3余り0
3÷2=1余り1
1÷2=0余り1
から、101_10=1100101_2となります。
小数点では、割る数ではなく掛ける形で表示できます。
0.1_10を例にしましょう。
0.1×2=0.2(1以下ということで0)
0.2×2=0.4(1以下ということで0)
0.4×2=0.8(1以下ということで0)
0.8×2=1.6(1以上なので、1。1.6-1=0.6)
0.6×2=1.2(1以上なので、1。1.2-1=0.2)
と言う風に、0を1つおいて"0011"の列が循環する表示になります。
よって、0.1_10=0.0001100110011・・・_2となります。
かなり、直感を重視した内容になっていますので、理論的な説明が必要ですね。
回答ありがとうございました。
整数値については、#5の方の説明で理解できたのですが、
小数点を含んだ数値のやり方が理解できません。
できれば説明お願いします。
No.2
- 回答日時:
小数点を含んだ実数の変換は、専門外なのでよくわかりませんが、10進数の整数を2進数に変換する場合には、
101÷2=50 余り 1 (1)_2
50÷2=25 余り 0 (01)_2
25÷2=12 余り 1 (101)_2
12÷2=6 余り 0 (0101)_2
6÷2=3 余り 0 (00101)_2
3÷2=1 余り 1 (100101)_2
1÷2=0 余り 1 (1100101)_2
というように、2で割っていって、余りを下の位から順に立てていきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Java Java 石取りゲーム 3 2023/02/02 15:46
- 数学 『数は実在するのか』 6 2023/06/04 15:15
- 数学 モデルのパラメータの定義がいまいちわかりません。 3 2022/10/11 15:16
- 高校 三次関数のグラフにつきまして 3 2022/05/15 11:14
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- 物理学 ベクトルと座標系につきまして 1 2022/04/03 06:23
- その他(データベース) 4進数風なバーコードは何ですか? 2 2022/11/28 23:33
このQ&Aを見た人はこんなQ&Aも見ています
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報