• ベストアンサー

数学、2進法の計算方法について

すみません、学校の宿題が全く解けないので、解き方と答えをわかる方、教えてくれませんか? (1)4進法で121である数を、(121)5であらわすとき、この数を2進法で示せ。

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

  • ベストアンサー
noname#175206
noname#175206
回答No.2

 4進数で121である数を10進数に直すとすれば、  1×4^2+2×4^1+1×4^0=25 ですね。10進数では25になります。  これは10進数での表記では各桁を10の何乗(桁数-1乗)で表した足し算なのと同じです(たとえば25=2×10^1+5×10^0)。  これを2進数に直すには、まず2の何乗で割れるかなんですが、2^4=16で割れて、余りが9。9は2^3=8で割れて、余りが1。1は2^2=4でも2^1=2でも割れなくて、あえて言えば2^0=1で割れて、答が1です。  従って、25=1×2^4+1×2^3+0×2^2+0×2^1+1×2^0と表せ、2進数では11001となります。  これを筆算で簡単にやるには以下のようにします。 2)25   (←筆算の割り算を逆さまに描いています)  ̄ ̄  12 余り1 2)12  ̄ ̄  6 余り0 2)6  ̄ ̄  3 余り0 2)3  ̄ ̄  1 余り1  これで最後の答と、そこまでの余りを逆順に書きだして11001です。  何進数が来ても、基本はこれで計算できます。計算して10進数に直して、また2進数に直す計算で面倒ですが、何進数でもできて、筆算も使えますので、確実です。  2で割るのを4で割るようにすれば、10進数の25が4進数で121になることが出ます。一応やっておきます。 4)25   (←2を4に変えます)  ̄ ̄  6 余り1 4)6  ̄ ̄  1 余り2  逆順に書きだして121です。検算してOKのようです。 ----------------------------------  ところで、4=2^2です。こういう関係が成り立つと、別の方法もあります。  (121)4=1×4^2+2×4^1+1×4^0 =1×2^4+0×2^3+2×2^2+0×2^1+1×2^0 ←1以上の掛け算をもうちょっと整理 =1×2^4+1×2^3+0×2^2+0×2^1+1×2^0 =(11001)2  もしかすると、10進数との間の筆算の方法もあるかもしれませんが、何せ九九は10進数で覚えていますので、あまり実用的ではないかもしれません。 ------------------------------------- P.S.(余談)  コンピュータは2進数で計算していますが、人間がそのデータを見たりするときは16進数を使います。これは16=2^4という関係があるため、非常に相性が良いです。  自然数なら10進数に直したほうが見やすいのですが、2進数の割り算などで有限桁の小数点以下が出たりすると、16進数では全く誤差なく表せますが、10進数ですと循環小数になってしまい、有限桁で打ち切って誤差が出ることがよくあります。  1円の間違いも許されない経理用の実務プログラムなどでは、10進数で計算するか、2進数と10進数の間の誤差を考慮して補正したりしているようです。塵も積もれば山となるわけですので。

musinoiki79
質問者

お礼

とても分かりやすいです!! 助かります!! ありがとうございました!!

その他の回答 (1)

  • bgm38489
  • ベストアンサー率29% (633/2168)
回答No.1

>>4進法で121である数を、(121)5であらわすとき、 (121)4でしょ?何進法かは右下に小さい文字で表します。かけませんがね。 4進法の場合、百の位(?)は、4^2=16が何個あるかを表します。十進法で百の位は、10^2=100が何個あるのかを表すのと同様。つまり、この数の場合、十進法に直せば、(4^2)*1+(4^1)*2+1となるのです。それをまた、2進法に直す…これが本道ですが、実はこの場合、もっと簡単な手がある。 4進法の100は2進法では10000。4進法の20は2進法の200…じゃなjかった、1000。4進法の1は2進法でも1。すなわち、(11001)2。 4=2^2だから、こんな簡単にできるわけです。

musinoiki79
質問者

お礼

なるほど・・・、久しく数学を行っていなかったので、とても勉強になります。 ちょっと復習してみようと思います。 ありがとうございました!!