![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67b6d)
小数点を含んだ実数の、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?e8efa67b6d)
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
かけ算、割り算の移項
-
分数の掛け算・割り算について...
-
比率の計算
-
展開図、型紙を作りたい。 写真...
-
?÷5/8=4の答え、解き方を教えて...
-
比率の計算方法
-
パーセントの計算
-
教えて下さい。
-
3回の平均を出す
-
分数の分割
-
√3h=15+h/√3 についての計算
-
一の位が0でない2桁の正の整...
-
フーリエ変換について
-
高校数学で、循環小数0.015(15...
-
比を簡単にするのに0.7対0.2は...
-
伸び率のマイナス数値からのパ...
-
6➗8= 答え 何あまり何 で答えて...
-
1から9までの9個の数字から異な...
-
xy–xの因数分解の答え教えてく...
-
1500円に3/4を乗じるとは!?...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
かけ算、割り算の移項
-
分数の掛け算・割り算について...
-
?÷5/8=4の答え、解き方を教えて...
-
シグマ計算
-
パーセントの計算
-
あなたが勤務する商店で、新商...
-
x人の20%の人数の求め方を教え...
-
元から円への直し方
-
一の位が0でない2桁の正の整...
-
数IAレジェンド例題89 2時関数...
-
高校1年の数学です! この青い...
-
両辺ともに0以上なので、2乗し...
-
小学生算数の逆算について
-
乗数が小数点の場合、四則計算...
-
|a|-|b|≦|a-b|の証明の仕方
-
比を簡単にするのに0.7対0.2は...
-
移項の計算の仕方を教えてくだ...
-
展開図、型紙を作りたい。 写真...
-
Xについての一次方程式、ー3分...
-
X の求め方
おすすめ情報