• ベストアンサー

2進法で小数を表す方法

2進法は自然数の足し算は簡単ですがこたえが1以下になるような割り算はどのようにして実行するのでしょうか。又1以下の数は分数で示すのは簡単でも小数で示すことは難しいのでしょうか。

noname#194289
noname#194289

質問者が選んだベストアンサー

  • ベストアンサー
  • chimaki-t
  • ベストアンサー率41% (108/261)
回答No.1

例えば10進数の世界では「0.03」を表するのに 3×10のマイナス2乗 (=3×0.01) と表現する事ができます。 これと同じ様に、2進数の世界でも 整数×2の何乗 と言う表現で小数点以下を含む数を表現する事ができます。 ほとんど全てのコンピュータは、この方式を採用しています。 「浮動小数点」と言う言葉で検索してみて下さい。

noname#194289
質問者

お礼

御教示ありがとうございました。2進法というのもすべてが簡単ではないわけですね。

その他の回答 (2)

回答No.3

こんにちは。 ANo.1,ANo.2でお答えが出ていますが、もう少し詳しく説明してみますね。 自然数の2進法はご存知なのですよね。 その復習から入ります。 例えば、a,b,cを0か1として、abc という2進法の数字があったとすると、これは10進法で書くと、 2^2×a + 2^1×b + 2^0×c … (1) というものです。(「^2」は右肩に2、すなわち2乗の意味。) たとえば、101という2進法の数字があったとすると、これは10進法では、 2^2×1 + 2^1×0 + 2^0×1 = 4+0+1 = 5 になります。(2の0乗は1です。) この考えを拡張すると、「.」を小数点として、 abc.def という2進法の数字は、10進法でいう 2^2×a + 2^1×b + 2^0×c + 2^{-1}×d + 2^{-2}×e + 2^{-3}×f = 2^2×a + 2^1×b + 2^0×c + (1/2^1)×d + (1/2^2)×e + (1/2^3)×f …(2) になります。例えば、2進法の 1.01 は、10進法では、 2^0×1 + (1/2^1)×0 + (1/2^2)×1 = 1 + 0 + 0.25 = 1.25 になります。このように、2進法でも小数を表現することはできます。 考えてみれば、10進法でも、nmkという数字は、 10^2×n + 10^1×m + 10^0×k というものだし、n.mkという数字は、 10^0×n + 10^{-1}×m + 10^{-2}×k ですよね。これと(1),(2)は全く同じ考え方ですね。 割り算の計算の方法は10進法でもいろいろな方法があるように、2進法でもいろいろな計算方法があると思います。(言うまでもなく、どんなやり方でも正しければ結果は一致します。)以下にその一例を示します。 例えば、2進法で 11/101 を計算するには、まず 11/101 = 0.1× 110/101…(3) と変形します。0.1×10=1なのは、2進法の世界でも成立つのは、0.1が10進法の1/2、10が10進法の2であることから明らかですね。 110=101+1なので、 (3)=0.1×(101+1)/101 = 0.1×(1+1/101) = 0.1 + 0.1×1/101 …(4) になります。 次に、1/101を計算するには、 1/101=0.001×1000/101=0.001×(101+11)/101 = 0.001×(1+11/101) + 0.001 + 0.001×11/101 故に、 (4)=0.1+0.1×0.001 + 0.01×0.001×11/101   = 0.1001 + 0.0001×11/101 以下同様に、求めたい桁まで計算できます。 > 少数を含んだ場合に10進法のほうが四則演算がやりやすいように思うのは単に慣れだけの問題なのでしょうか。 10進法も2進法も、原理的には同じで、数学的な構造は全く同じですので、10進法のときに使った計算の考え方や手法は、2進法でも本質的にそのまま使えます。 ただ、使える数字の個数が、10進法だと10個、2進法だと2個なので、その意味で、便利かどうかはあると思います。2進法だと、小さい数字を表わすのでも、やたら桁が多くなってしまいます。 また、割り算などを計算するときには、約数の数が多いほうが便利な意味もありますので、10進法で、10=2×5なのは、計算の約に立ちます。その意味では、生身の人間が扱うには、10進法よりも、12進法のほうが約数が2,3,4,6と豊富で大変便利だろうという説があります。 その反面、2進法では10進法の九九に相当するものが、1×1=1 しかありませんので、覚えるものが少なくて便利ですね(笑)

noname#194289
質問者

お礼

ご丁寧なご教示をありがとうございます。普段行なっている計算の意味も2進法と比べて考えてみると理解できるのだろうと思いました。勉強させていただきます。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

浮動小数点に行く前に小数つきの固定小数点を勉強した方がいいです。 例えば1010.1011 なら 8+2+0.5+0.125+0.0625です。 2^nをn<0迄拡張すればそうなります。 割り算は10進数と同じように引いてはずらし引いてはずらしという同じ方法を使います。

noname#194289
質問者

お礼

御教示いただきありがとうございます。少数を含んだ場合に10進法のほうが四則演算がやりやすいように思うのは単に慣れだけの問題なのでしょうか。

関連するQ&A

  • 小数の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進法表記を求めることは出来るのでしょうか?

  • エクセルの足し算で、小数点以下を3進法にする方法

    エクセルの使用法について教えてください。足し算で小数点以下を3進法にする方法はありますか?例えば、(セル1)1.1+(セル2)1.2は通常は(セル3)2.3ですが、小数点以下を3進法にすることにより(セル3)3.0としたいのです。(セル3)にどのような数式を入力すればよいか、教えてください。

  • 小数

    すごく初歩的な質問なのですが、小数の掛け算、割り算をして答えが出た後どこに小数点を打っていいか分かりません。どなたか教えてください。

  • 16進数の小数を10進数に変換する方法について

    16進数の小数0.248を10進数の分数で表わすと73/512となりますが、 この答えの導き方についてです。 ある参考書に以下の説明がありました。 2×16×16+4×16+8 -------------------   16×16×16 上記の分子に関して、なぜ2に16が2回乗算されているのか、 なぜ4に16が乗算されているのか理解できません。 分母になるはずの16がなぜ分子にあるのか?? という疑問を抱いております。 どなたか、上記の理由について、教えて頂けませんか?

  • 小数と分数を2進数に直すやり方を教えてください。

    小数と分数を2進数に直すやり方を教えてください。 問.次の数値を2進数にせよ。 0.5 1/32     この問題がわからなくて困っています。 答えだけではなく、解き方も教えてもらえると助かります。 お願いします。

  • 分数・小数とn進法の関連

    数Aです。整数の単元で、分数・小数を学習した後にn進法を学習しました。 数学って、いろんなことが関連しあっていて面白いです。 でも、分数・小数(循環小数)とn進法の関連性がよくわかりませんでした。単に整数に関すること、というくくりで同じ単元の中で学習したのでしょうか? それとも何か関連があるのでしょうか? そんなに深い関連がないような気がするので、n進法を学習してから分数・小数を学習しても支障がないような気がします。 回答よろしくお願いいたします。

  • 一つも問題の意味と答えが理解不能

    三十代ですが、今まで算数をサボりまくったつけが仕事にまわってきて、算数ドリルはじめましたがこのページ全ての問題の意味となぜその答えになるかが一つもわかりません。 わかるのは、たし算、引き算、掛算、割算、分数、小数位のレベルの低学力です。

  • 小数、循環小数と分数について

    小数、循環小数と分数について 教えてください。 ある本に、『0.63を分数にすると?』というのがあり、 答えは(100x=63.636363...)-(x=0.636363...)=7/11 となっていました。しかし、0.36が循環小数であるという判断はどうするのですか? そもそも循環小数は数字が繰り返されるもので、0.636363・・ 循環小数でないもの(ただの少数?)は0.63ということではないのですか?? ただの少数だと0.63=63/100ではないのでしょうか??? ばかな質問かもしれませんが、どなたか宜しくお願い致します。

  • 小数と2進法

    何進法の表記かわからないので、質問します。 問題は、 0<α<1となる数αに対し、2^(n-1)αの小数部分は、(*){nが奇数のときは、1/2以上、nが偶数のときは、1/2未満}を満たすという。(ただし、n=1,2,3・・・)二進法の考えを用いて、αの値を求めよ。 解答は、 与えられた条件(*)は、αを二進小数で表したときの小数第n位が{nが奇数のときは、1、nが偶数のときは、0}であることをを意味する。したがってαの二進小数表示は、α=0.101010・・・(1)という循環小数である。周期が2桁であるので、αを2^2=4倍し4αは、二進法で 10.101010・・・(2)と表されることから、(2)-(1)であるαの3倍は、二進法で10と表される。すなわち十進法の2である。ゆえに 3α=2 より α=2/3 この問題でα=0.a_1a_2a_3a_4・・・a_n・・・と表される小数は、10進法に限られるのか?三進法や八進法でよいのか?が疑問です。αは十進法であらわされるとは問題に書かれていないので、迷いました。 10進法の小数に2をかけると、その整数部分が二進法の小数第一位になるということなので、αは十進法の小数かと思いましたが、はっきりしません。どなたかαは十進法の表記なのか、その他の底の表記でもよいのか教えてくださいお願いします。

  • SET /A 小数点以下の足し算

    【質問】 SET /A で小数点以下の足し算をしたい 【現状例】 SET /A SS=620+32.333 でSSが652になってしまう 求めたいSSは652.333です ------- 自力で解決できそうな印象でしたが割り算などはヒントがすぐ見つかりましたが、足し算に関しては手掛かりが見つかりませんでした。 宜しくお願い致します。