- ベストアンサー
基数変換の変換につきまして
現在基本情報技術者の勉強をしています。 10進数から2進数への変換など基数変換がよくわかりません。 10進数の数値を 「 0 」 になるまで 「 2 」 で割り算していき、その結果の「余りの数 」を並べることによりある10進数の値を2進数の値へ変換することができることは分かるのですが、 どういう仕組みでそのようにしたら求められるのかがまだ理解しきれないのです。 とくに少数を変換するときなどはまた戸惑ってしまい、それをまた16進数や8進数などスムーズに変換することができません。 基本的な質問で大変申し訳ないのですがどうかご教授頂ければ幸いです。 どうぞよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
10進数で「ABCDE(A万B千C百D十E)」は A×10000+B×1000+C×100+D×10+E×1 です。 書き方を変えると A×10の4乗+B×10の3乗+C×10の2乗+D×10の1乗+E×10の0乗 です。 更に書き換えると ((((A×10+B)×10+C)×10+D)×10+E になります。 括弧の内側(上の桁)から見ていくと「Aを10倍してBを足して、それを10倍してCを足して、それを10倍してDを足して、それを10倍してEを足す」です。 これを逆に計算すると「ABCDEを10で割った商がABCDで、余りがE。ABCDを10で割った商がABCで、余りがD。ABCを10で割った商がABで、余りがC。ABを10で割った商がAで、余りがB」になります。 これは >10進数の数値を 「 0 」 になるまで 「 2 」 で割り算していき、その結果の「余りの数 」を並べることによりある10進数の値を2進数の値へ変換することができることは分かるのですが、 とまったく同じです。「10が2になっただけ」です。 8進数も16進数も「10が8になっただけ」だし「10が16になっただけ」です。 >とくに少数を変換するときなどはまた戸惑ってしまい 小数点以下は「×10の●乗」の「●」が「マイナス」になっただけです。 10進数で「ABCDE.FGH」は A×10の4乗+B×10の3乗+C×10の2乗+D×10の1乗+E×10の0乗+F×10の-1乗+G×10の-2乗+H×10の-3乗 になります。 これは A×10000+B×1000+C×100+D×10+E×1+F×0.1+G×0.01+H×0.001 になります。 同じように、2進数の「ABCDE.FGH」も A×16+B×8+C×4+D×2+E×1+F×0.5+G×0.25+H×0.125 になるだけです。 これは A×2の4乗+B×2の3乗+C×2の2乗+D×2の1乗+E×2の0乗+F×2の-1乗+G×2の-2乗+H×2の-3乗 と同じで、「10の●乗」が「2の●乗」に変わっただけです。 小数点があっても無くても、考え方は同じです。
その他の回答 (3)
- tadys
- ベストアンサー率40% (856/2135)
お金の両替で説明します。 10進数で使えるお金は、1円、10円、100円、1000円、、、、です。 そして、それぞれの貨幣を使用できる個数は最大9個です。 つまり、1円玉が使用できるのは0~9個までです。 2進数で使えるのは1円、2円、4円、8円、16円、32円、64円、、、、です。 それぞれの貨幣で使用できる個数は1です。 つまり、1円玉が使用できるのは0または1個です。 さて、10進数で43円が有るとして、これを2進数の貨幣に変える事を考えます。 43円を2円玉に両替すると、43/2=21 余り 1になるので、1円玉1個を使用します。 (一時的に2個以上使用しても良い) 残りは42円です。 42円を4円玉に両替すると42/4=10 余り 2なので、2円玉1個を使用します。 残りは40円です。 40円を8円玉に両替すると40/8=5 余り無しなので、4円玉は使用しません。 残りは40円です。 40円を16円玉に両替すると40/16=2 余り8なので、8円玉1個を使用します。 残りは32円です。 32円を32円玉に両替すると32/32=1 余り無しなので16円玉は使用しません。 残りは32円なので32円玉1個を使用します。 結果は、32円玉 1個、16円玉 0個、8円玉 1個、4円玉 0個、2円玉 1個、1円玉 1個です。 43(10進)=101011(2進)です。 以上の計算を少し書きかえると 43円を2円玉に両替すると、43/2=21 余り 1になるので、1円玉1個を使用します。 残りは2円玉21個です。 2円玉21個を4円玉に両替すると21/2=10 余り 1なので、2円玉1個を使用します。 (2円玉2個で4円玉1個なので2で割る) 残りは4円玉10個です。 4円玉10個を8円玉に両替すると10/2=5 余り無しなので、4円玉は使用しません。 残りは8円玉 5個です。 8円玉 5個を16円玉に両替すると5/2=2 余り1なので、8円玉1個を使用します。 残りは16円玉2個です。 16円玉2個を32円玉に両替すると2/2=1 余り無しなので16円玉は使用しません。 残りは32円玉1個です。 次々と2で割った時の余りで両替が完了しました。
お礼
お金の両替に例えるというのは面白い考え方で直感的に解りやすかったです。回答ありがとうございました。
- ybnormal
- ベストアンサー率50% (220/437)
十進数を2で割り続けていき、その余りを並べたものが2進数になるという手続き自体はわかっているようなので、そこから話を始めます。 十進数Xを2の累乗の和として表すと、 X = 2^n*An + 2^(n-1)*An-1 + 2^(n-2)*An-2 + ..... + 2^2*A2 + 2*A1 + A0 です。 このXを2で割ると、2^n*An + ..... +2*A1(長ったらしいので、これをX1としておきます)は偶数であることは明らかなので、余りがA0となり、商はX1を2で割ったものつまり 2^(n-1)*An + 2^(n-2)*An-1 + ....+ 2*A2 + A1(これも長ったらしいのでQ1としておきます)となります。 次にQ1を2で割りますが、2^(n-1)*An + 2^(n-2)*An-1 + ... + 2*A2(長いのでこれをX2とします)は偶数ですから、余りはA1、商はX2を2で割ったもの、つまり 2^(n-2)*An + 2^(n-3)*An-1 + ... A2(Q2と呼ぶことにする)になります。 次にQ2を2で割りますが、この後の処理は先に挙げたものと同様で、余りはA2、商は 2^(n-3)*An + 2^(n-4)*An-1 + .... A3(Q3と呼ぶことにする)となる。 さらにQ3を2で割って.....と続けていってこれ以上割り切れなくなるまでいくと最後の計算の余りはAnになります。 ここまでくれば、元の十進数Xの二進数表現(2^n*An + 2^(n-1)*An-1 + ... 2^2*A2 + 2*A1 + A0)と、割り算の過程であらわれる余り(A0, A1, A2....An)に関連があることがおわかりになると思います。つまり、割り算で求められた余りは、二進数表現の各項の係数となっています。したがって、余りを集めて並べれば二進数となるわけです。
お礼
もう少し数学の勉強をしなければいけないと気づかされました。回答ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
2進数の 1101 は, 10進数では 13 です. では, なぜ「2進数の 1101 が 10進数の 13 になる」のか, 説明できますか? あと, 多項式の計算をする「ホーナー法」も確認しておいてください. ちなみに「少数」じゃなくて「小数」だよね.
お礼
ホーナー法というのは聞いたことがありませんでした。 回答ありがとうございました。
お礼
計算の過程を一番解りやすく丁寧に説明して頂いたchie65535をベストアンサーに選ばせていただきました。 ありがとうございました。