• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:少数の10進法を2進法にする方法)

少数の10進法を2進法に変換する方法

このQ&Aのポイント
  • 会社から基本情報処理技術者試験の問題を入社前に独学で勉強するように言われています。少数の10進法を2進法に変換する問題があります。この記事では、10進法を2進法に変換する方法について解説します。
  • 10進法の少数を2進法に変換する手順は以下の通りです。まず、少数の整数部分を2で割りながら2進法に変換していきます。その後、少数の小数部分を2でかけながら2進法に変換していきます。最終的に得られた整数部分と小数部分を結合することで2進法の数値が得られます。
  • 少数の10進法を2進法に変換する際、小数の部分が2で割られるのは、10進法の法則に基づくものです。10進法では整数部分を10で割り、小数部分を10をかけることで桁が移動しますが、2進法では整数部分を2で割り、小数部分を2をかけることで桁が移動します。このため、少数の10進法を2進法に変換する際には、整数部分を割って、小数部分をかけていく操作が行われます。

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

  • ベストアンサー
  • kusa_mochi
  • ベストアンサー率76% (1597/2087)
回答No.1

根本的なところが分からないと、訳が分からない操作をとりあえずすれば答えが出るようになるとしか理解できないよねぇ。 以下に小数点以下の数の場合の説明をするが、根本は整数も同じだ。 ある任意の少数点以下の数があった場合、その数は分数の合計で表すことが出来る。  例えば、0.625は  (1/2 + 0/4 + 1/8 + 0/16 + 0/32 + 0/64 + 0/128 + … ) なぜ分母が2の階乗の数なのか、何故分子が0の数も表記しているのか不思議に思うかも知れないが、後で分かる。 とりあえずはそういうものだと思って欲しい。 さてここからが、本題だ。 この数に2を掛けるとどうなるか。  (1 + 0/2 + 1/4 + 0/8 + 0/16 + 0/32 + 0/64 + 0/128 … ) さて上記の数の"1"を取り除いて、もう一度2を掛ける。  (0 + 1/2 + 0/4 + 0/8 + 0/16 + 0/32 + 0/64 + 0/128 … ) さて上記の数の"0"を取り除いて、もう一度2を掛ける。  (1 + 0/2 + 0/4 + 0/8 + 0/16 + 0/32 + 0/64 + 0/128 … ) という数になる。 ここまで説明するとなんとなく分かってきたのではないかと思うが、2進数にした時の該当桁ビットが"1"なのかどうかを確認するために、2を掛けているのだ。 1/2 = 0.5 = 0.1(2) 1/4 = 0.25 = 0.01(2) 1/8 = 0.125 = 0.001(2) 1/16 = 0.0625 = 0.0001(2) だということは知っているよね。 整数側も根本原理は同じことなんだ。 (整数側は宿題にしましょう。上記を参考に自分で考えてみてね)  

nekonohun
質問者

お礼

ありがとうございます。1か0かの確認のためですか。0・625を参考に考えて見ます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「2を掛ける」とか「2で割る」ことによって2進数表示がどのように変化するかを考えてください. やってることが結局は「目的とするビットをなんとかして 1の位に移動させること」である, ということがわかればいい.

nekonohun
質問者

お礼

回答補足のほうにお礼を書いてしまいました。すいません。ありがとうございます。1の位への移動ですか。なるほど。1の位への移動を参考に考えて見ます。

nekonohun
質問者

補足

ありがとうございます。1の位への移動ですか。なるほど。1の位への移動を参考に考えて見ます。

関連するQ&A