1/5を2進法で表すとき、0.2に2をかけていくのはなぜですか?わかりやすく教えてください。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2008/02/16 19:19:53
  • 終了:2008/02/18 00:17:00

ベストアンサー

id:juic No.6

juic回答回数38ベストアンサー獲得回数32008/02/17 14:02:04

ポイント100pt

4.の回答者です。

それでは整数の場合について、10進数などと比較しながら確認してみます。


10進数の位取りは、一、十、百、……です。各桁にならぶ数は0,1,……9のいずれ

かです。

2進数の位取りは、一、二、四、八、……です。各桁にならぶ数は0,1のいずれか

です。


【10進数】で103という数を考えると、

103=(1×百)+(0×十)+(3×一)

これは、百の固まりが1個と一の固まりが3個ということですが、次のように調べ

られます。

103に百が(いくつ)含まれているか?→Yes(1個)

103-100=3

3に十が(いくつ)含まれているか?→No(0個)

3に一が(いくつ)含まれているか?→Yes(3個)

3-3=0

よって103=(1×百)+(0×十)+(3×一)


次に、10進数で11という数を【2進数】で、考えて見ます。

位取りは一、二、四、八、一六、…ですから、八から始めます。

11に八が(いくつ)含まれているか?→Yes(1個)

11-8=3

3に四が(いくつ)含まれているか?→No(0個)

3に二が(いくつ)含まれているか?→Yes(1個)

3-2=1

1に一が(いくつ)含まれているか?→Yes(1個)

1-1=0

よって11(10進)=(1×八)+(0×四)+(1×二) + (1×一)=1011(2進)

ちなみに、2進数の場合「含まれている」とすれば必ず1個です。


参考として、【3進数】でも考えて見ます。

位取りは、一、三、九、二七、…

11に九が(いくつ)含まれているか?→Yes(1個)

11-9=2

2に三が(いくつ)含まれているか?→No(0個)

2に一が(いくつ)含まれているか?→Yes(2個)

2-2=0

よって11(10進)=102(3進)

小数の場合も同様で、位取りが、

【10進数】1/10、1/100、1/1000、……

【2進数】1/2、1/4、1/8、……

ということです。



http://www.infonet.co.jp/ueyama/ip/glossary/binary_g.html

id:massa-will

うわーすごい。ドンピシャでわかりました。嬉しいです。ありがとうございました。

2008/02/18 00:02:40

その他の回答(5件)

id:KUROX No.1

KUROX回答回数3542ベストアンサー獲得回数1402008/02/16 19:30:29

ポイント10pt

http://mt-net.vis.ne.jp/ADFE_mail/0270.htm

2の2乗、2の1乗、2の0乗、2の-1乗、2の-2乗、2の-3乗

2進数であらわしたときの桁数が上記のようになってるから。

2をかけてるという事は、2の-1乗で割っているということでは?

#間違ってるかな?

id:massa-will

ありがとうございます。ただ、本質がいまひとつわかりません。

2008/02/16 19:59:16
id:a2gi No.2

a2gi回答回数81ベストアンサー獲得回数32008/02/16 21:17:15

ポイント150pt

質問者さんは小数の2進数表示の前に自然数の2進数への変換を理解できていません。

良いサイトが見つからないので文章だけでうまく説明できるか分かりませんが

そもそも10進数を2進数に変換するときに用いる。

「2で割る」というのは例えば13を2進数に変換する場合にまず、

13÷2=6あまり1

ですね?

これは

○○|○○|○○|○○|○○|○○|○

2こずつの塊が6個在り1余っているという意味です。なので2進数の1桁目が1に成ります。

ここで○二つを●に書き換えるとこのような状態になります

●●●●●●○

続いて

6÷2=3あまり0

●●|●●|●●|

これは●二つが3つあることになります。ここで●のあまりがないので2進数の二桁目は0になります。

(●は○○なので2は使わないということになります)

今度は●●を□に置き換え

□□|□

3÷2=1あまり1

よって□□が1個、□が1個余ります。この□は□→●●→○○○○なので4が一ついるので2進数の3桁目が1

最後に□□を■としてこれは○が8個なので2進数の4桁目が1となり、まとめて

1101となります。■□○

つまり、2で割るというのは2の塊(2倍していく)が何個あるかを調べています。

これが分かれば少数も出来ます。なぜなら2を掛けるのではなく0.5で割っています。

つまり、0.5、半分(0.5倍していく)が何個あるかを調べています

少数はちょっと文字で表現するのが難しいので絵でいきます。あと書くのがめんどくさいので0.625でやります。

0.625÷0.5=1あまり0.25

今度は0.5(半分)の塊が一つあると分かったのであまりを計算していきます。

0.25÷0.5=0あまり0.5

半分の塊(0.25)はありません。

0.5÷0.5=1あまり0

半分の塊(0.125)がありました。

http://q.hatena.ne.jp/1203157191

id:massa-will

大変に詳しい解説をありがとうございます。ただ、やっぱり少し難しいです。

回答への質問ですが、10進数を2進数に変換するときに2で割るのはなぜですか?

また、「2個ずつの塊が6個あり1余っている⇒2進数の1桁目が1になる」は、どうしてなの

でしょうか?

例えば、自分の理解の程度をお教えするのに、2進数の110101を10進数に変換する式;

1*2^5+1*2^4+0*2^3+1*2^2+0*2+1*1=53

は辛うじて理解できています。しかし、その逆ができません。

2008/02/17 01:20:16
id:MarriageTheorem No.3

MarriageTheorem回答回数12ベストアンサー獲得回数02008/02/16 21:00:33

ポイント15pt

まず確認ですが、1/5つまり0.2を二進法で表わすとは、0.2 = 0.b_1b_2b_3b_4 \cdotsとなるような0と1からなる列を求めましょう、ということです。

そのためには、逆に「もし0.2が上のような形に表わされているとしたら、どんな可能性があるだろうか」と考えます。まず、両辺を2倍すると

0.4 = b_1.b_2b_3b_4 \cdots

となりますが、左辺の0.4は1よりも小さいので、冒頭のような列があったとしたらb_1は0になるはずです。よってb_1 = 0

続いて、この結果を代入した後で上の列をもう一度2倍すると

0.8 = b_2.b_3b_4b_5 \cdots

となり、先ほどと同じ理由でb_2 = 0。さらに2倍すると

1.6 = b_3.b_4b_5b_6 \cdots

となり、今度は1よりも大きいのでb_3 = 1となります。次は両辺から1を引いて(1より大きくなったので)

0.6 = 0.b_4b_5b_6 \cdots

この両辺を2倍すると、・・・といった具合に順次求めていけばよいのです。


ちなみに、例えば普通の(10進法の)割り算の筆算で2/7の小数表記を求める場合、まず2の右に0をくっつけて(20になる)、7がいくつまで引けるか考えてその数(今は2)を答えの欄に書いて、7を引けるだけ引いた余り(今は6)の右にまた0をくっつけて(60になる)、7がいくつまで引けるか考えて・・・と続けていきますよね。

この「右に0をくっつける」という操作は、実は直前の計算の余りを10倍していることになります。つまり、2進法でも10進法でも、途中で2倍するか10倍するかが違うだけで、実は結局同じことをしているだけなんです。

ダミーURL http://q.hatena.ne.jp/

id:massa-will

ありがとうございます。回答への質問ですが、どうして0.2=0.abcde...と予想できるの

ですか?1よりも小さいからと考えると、それは10進法の発想ではないかと思ってしまい、

こんがらがってしまいます。

2008/02/17 01:40:56
id:juic No.4

juic回答回数38ベストアンサー獲得回数32008/02/16 22:17:25

ポイント50pt

まず、2進数の定義どおりに計算してみます。

1/5の中に1/2が含まれているか?→No(0)

1/5の中に1/4が含まれているか?→No(0)

1/5の中に1/8が含まれているか?→Yes(1)

1/5-1/8=3/40

3/40の中に1/16が含まれているか?→Yes(1)

3/40-1/16=1/80

以下続く……

よって0.2(10)=0.0011…(2)



次に「2をかける」方式で計算します。

0.2×2=0.4……1以上?→No(0)

0.4×2=0.8……1以上?→No(0)

0.8×2=1.6……1以上?→Yes(1)


   (ここで、0.2×2<1  ⇔ 1/5<1/2

        0.2×2^2<1 ⇔ 1/5<1/4

        0.2×2^3>1 ⇔ 1/5>1/8  (※右の不等式を両辺×2で左です))


1.6-1=0.6


   ( 上の式で1.6-1=0.6 ⇔ (1/5-1/8)×8=3/40×8 )


0.6×2=1.2……1以上?→Yes(1)


   (0.6×2>1 ⇔ 3/40>1/16 (両辺×16))


……というわけでうまく計算できるわけです。



こちらもご参考に。

http://okwave.jp/qa3009359.html

id:massa-will

ありがとうございます。もう少しでつかめそうなのですが、どうもつかみきれません。

どうして「1/5の中に1/2が含まれているか」を考える発想になるのでしょうか?

PS:ご紹介のサイトも参考いたしました。

2008/02/17 01:32:56
id:yukiwaka No.5

yukiwaka回答回数187ベストアンサー獲得回数22008/02/16 20:11:14

ポイント15pt

私達が普段私用している数字の表現は10進法という方法で表しています。

10進法は10倍ごとに桁が上がり、2進法は2倍ごとに桁が上がります。

また、2進法では0と1の数字のみ使います。

10進法 0 1 2 3 4 5 6 7 8 9 10 11

2進法 0 1 10 11 100 101 110 111 1000 1001 1010 1011

* * *

といった感じです。

ですので、2をかけていく・・・というのは違う気がします。

すみませんっ答えになっていないかと思いますが参考程度にしてください。

http://www.oitda.or.jp/yh/digital/answer/a_digital2.htm

id:massa-will

「答えになっていない」など、とんでもないことです。ありがとうございます。

2008/02/17 01:25:25
id:juic No.6

juic回答回数38ベストアンサー獲得回数32008/02/17 14:02:04ここでベストアンサー

ポイント100pt

4.の回答者です。

それでは整数の場合について、10進数などと比較しながら確認してみます。


10進数の位取りは、一、十、百、……です。各桁にならぶ数は0,1,……9のいずれ

かです。

2進数の位取りは、一、二、四、八、……です。各桁にならぶ数は0,1のいずれか

です。


【10進数】で103という数を考えると、

103=(1×百)+(0×十)+(3×一)

これは、百の固まりが1個と一の固まりが3個ということですが、次のように調べ

られます。

103に百が(いくつ)含まれているか?→Yes(1個)

103-100=3

3に十が(いくつ)含まれているか?→No(0個)

3に一が(いくつ)含まれているか?→Yes(3個)

3-3=0

よって103=(1×百)+(0×十)+(3×一)


次に、10進数で11という数を【2進数】で、考えて見ます。

位取りは一、二、四、八、一六、…ですから、八から始めます。

11に八が(いくつ)含まれているか?→Yes(1個)

11-8=3

3に四が(いくつ)含まれているか?→No(0個)

3に二が(いくつ)含まれているか?→Yes(1個)

3-2=1

1に一が(いくつ)含まれているか?→Yes(1個)

1-1=0

よって11(10進)=(1×八)+(0×四)+(1×二) + (1×一)=1011(2進)

ちなみに、2進数の場合「含まれている」とすれば必ず1個です。


参考として、【3進数】でも考えて見ます。

位取りは、一、三、九、二七、…

11に九が(いくつ)含まれているか?→Yes(1個)

11-9=2

2に三が(いくつ)含まれているか?→No(0個)

2に一が(いくつ)含まれているか?→Yes(2個)

2-2=0

よって11(10進)=102(3進)

小数の場合も同様で、位取りが、

【10進数】1/10、1/100、1/1000、……

【2進数】1/2、1/4、1/8、……

ということです。



http://www.infonet.co.jp/ueyama/ip/glossary/binary_g.html

id:massa-will

うわーすごい。ドンピシャでわかりました。嬉しいです。ありがとうございました。

2008/02/18 00:02:40
  • id:a2gi
    >10進数を2進数に変換するときに2で割るのはなぜですか?
    それはまず10進数は10のn乗を何個かで表していて、2進数は2のn乗を何個かで表しています。
    (2進数の場合は0と1だけなのであるかないかですが)
    つまり10進数から2進数に変換するためには
    10進数で表した数字を2のn乗をそれぞれ何個必要であるかを調べればよいのです。
    そこでまず、10進数を2で割るのですが小学校で習ったと思いますが
    8割る2という計算について
    8個のリンゴを二つずつ配ると何人に配ることが出来るでしょうか?
    という感じで小学校の頃習ったのではないでしょうか?
    そのまま2進数の変換に当てはめると例えば10進数の5を
    二つずつ配ります。すると二人に二つずつ配ることができ1つ余りますね。
    ここで先ほどの2進数とは何かというのを思い出して欲しいのですが
    2進数は2のn乗すなわち2^0,2^1,2^2,2^3・・・=1,2,4,8・・・をつかって数を表現するので
    この段階で1が余ったと言うことはそれより大きい数2,4,8などで1を表現することは出来ませんよね。
    ただし、この段階では2を1で済むのか、それとも4が必要なのか分かりません。
    そこでもう一度2で割ります。つまり今度は4個ずつ配ると何個余るかを計算することになります。
    (2で割った結果を2で割っているので計算の結果としては元の数字を4で割っていることになる(あまり除く))
    質問者さんは質問の補足を見る限り少数の前にしっかり2進数とは何かをとばさずしっかり勉強した方がよいです。
    個人的に面白いなと思ったのは
    http://blogs.yahoo.co.jp/ryu1_mori/1097602.html
    です。いかにも種がありそうなのですが2進数を知らない人はどういう種かは絶対分かりません。
    また、これが種を理解できるのなら2進数が分かっていると言うことです。
    あと指を使って2進数の足し算や引き算をするなんて言うのも面白いですよ。こつがいるけど掛け算も出来てしまいます。
    あと
    >どうして0.2=0.abcde...と予想できるの
    これは10進数の1は2進数でも1ですよね?ということはそれよりも少しでも小さくなれば少数になります。
    もっと数学的に説明するならばXの0乗は皆1に成ります。
    (この理屈は3^5/3^2=3^3が理解できるのなら3^5/3^5=1で別の書き方をすれば3^5/3^5=3^0
    よって3^0=1となります。)
    ということは1より小さい数字は必ずxのマイナスn乗で表すことになります。
  • id:massa-will
    とても丁寧な解説をありがとうございます。お時間をとって作っていただいた回答を
    テキストのように読ませていただきました。非常に勉強になりました。ありがとうございます。
  • id:wasisan
    蛇足かもしれませんがあまりフォローされてないみたいなのでコメント.

    整数であれば10進⇔2進が一致するというのは分かりやすいと思います.
    しかし,小数を "2のマイナス階乗(1/2, 1/4, ...)の和” で表現するというのは
    混乱する所だと思います.質問者もここで違和感を感じていたのでは?

    変に感じるのはなぜかというと,
    普通の10進数では有限小数なのに,2進数にすると無限小数になる
    ケースが多いからです.

    たとえば,
    0.1は10進数では有限で示せますが,2進数だと
    0.000110001100011....
    と00011が無限に繰り返すことになります.

    詳しくいうと,「10進で,a/2^n(aは奇数)という形になる分数」
    のみ2進でも有限小数で表すことができます.

    小数の場合,2進数表現は非常に誤差の大きい方法なのです.
    この辺りが数値計算の分野では詳しく研究されることになります.

    参考:(2・8・16進法の計算)
    http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/BackGround/BinHex.html
  • id:massa-will
    wasisanさん
    締め切り後にもかかわらず、教えていただきまして、大変に感謝いたします。
    ありがとうございます。勉強になります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません