• ベストアンサー

2進数と10進数と16進数の変換について

私の学校の情報の授業の中で、2進数を16進数にしたり、また、逆をやったり、10進数を交えた、変換のテストが毎回の授業であるのですが、私は納得がいかないのです。 8桁もある2進数の足し算をやらせたり、2進数の引き算、割り算・・・(その他、文章問題など) でも、文句ばかり言っていても始まらないのですが・・・     (履修不足問題で毎回、テストをやることになってしまったらしい) そこで質問です。 私の知っているやり方が、2進数なら、10進数を2でひたすら割っていき、余りを後ろから読む。16進数も同様です。 これが厄介なもので、2進数の4桁までならどうにか10進数に変換できるのですが、8桁ともなると、問題を見た瞬間に冷や汗です。(苦笑) これしか知りません。(16→10 も知りません) しかし、他の効率的なやり方があるという話を聞いたことがあります。 毎回、10進数に直して計算していると、確実に時間がないのです。 他の効率的なやり方をご存知の方、また、そういうサイトをご存知の方いらっしゃいましたら、返答、よろしくお願いします。

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

  • ベストアンサー
  • hukuponlog
  • ベストアンサー率52% (791/1499)
回答No.2

まぁ、実務的には関数電卓で換算してしまうわけですが・・・σ(^_^;) 手計算でやれと言われた場合にはテーブルを作ってしまいます。 1010という数字があったとしますよね。 これって、10進法の場合だったら 10^3×1+10^2×0+10^1×1+10^0×0=100+0+10+0となるのが数の表記の基本です。つまり、数の表記の基本は、例えば「千の位にいくつ+百の位にいくつ+十の位にいくつ+一の位にいくつ」=「1000が何個+100が何個+10が何個+1が何個」という仕組みになっている。このことは、2進法だろうが、16進法だろうが変わりません。ただ、それぞれの位ごとに「○○がいくつ」の○○の部分の数が違うだけの話。 2進法→10進法ならば 2^3×1+2^2×0+2^1×1+2^0×0=8+0+2+0=10に換算できます。 16進法→10進法なら 16^3×1+16^2×0+16^1×1+16^0×0=4096+0+16+0=5012ですか。 つまり4桁の数字で16進数の場合、10進数で言うところの「千の位」は「4096の位」だということです。で、そこにある数字は、この4096がいくつあるかを表記している。F0F0なら、4096が15個で、16が15個。 それで、あらかじめこの位取りのテーブルを書いておいて、出された数字を当てはめていく、という方法を採ります。2進法の表記で8桁だったら 128 64 32 16 8 4 2 1 ← それぞれの位の数  1  1  1  1 1 1 1 1 ← 出題された数字 128+64+32+16+8+4+2+1=255 10進数の「1万の位」が2進数なら「16の位」になるのです。 2進数→16進数の直接換算なら#1さんの言う通り、4桁で区切って考えます。どうしてかというと、2進数4桁で表記できる最大の数字1111は8+4+2+1=15ですから、16進数の1からFまでのどれか一つで表記できるからです。もっとも、2進数の8桁くらいまでなら、使っていれば暗記できます。

tama-A
質問者

お礼

ご解答ありがとうございます。 なるほど!その方法がありましたね! お陰で本日の変換テストがGOODでした! 本当にありがとうございました!

その他の回答 (1)

  • ShowZ
  • ベストアンサー率31% (67/210)
回答No.1

2進数で8桁 って 255 までですよ?(^^ それくらい暗記してしまいましょう.  1 1 1 1 1 1 1 1 ← 2進数で255 128 64 32 16  8 4  2  1 ←10進数での重み 16進数に変換するときは4桁ずつにわければ楽です. 1111 1111 ←  2進数で255    F    F ← 16進数で255 例 1000 1010 ←  2進数    8    A ← 16進数 スペースが省かれてしまうのでちょっとずれてますが脳内で揃えて下さい(笑

関連するQ&A