IT
มัธยมปลาย

2進数を16進数に直すのができません。
やり方を教えていただけると嬉しいです

คำตอบ

2進数を4桁毎にまとめてグループを作る。
そのグループをそれぞれ別々に合計すると、全部0〜15の10進数になる。
10〜15までをアルファベットのA〜Fに置き換えると16進数です。

แสดงความคิดเห็น

 2進数1100 1001を16進数にします。
この問題を解くにあたって、「2進数の4ビット(4桁)は16進数の1桁に対応している」ことを知っておくのは極めて重要です。
 本来は、完全に10進数を経由せずとも答えを出せないといけませんが、今回は解説と検算のために2進数1100 1001が10進数でいくつか求めます。
それぞれの桁の重みを数えて、
2の7乗→1→128
2の6乗→1→64
2の5乗→0→0
2の4乗→0→0
2の3乗→1→8
2の2乗→0→0
2の1乗→0→0
2の0乗→1→1
すべて足すと
128+64+0+0+8+0+0+1=201
となり、2進数1100 1001は10進数で201だとわかります。

 先述のとおり、2進数の4ビットは16進数の1桁に対応しています。これを利用して答えを考えていきます。
2進数の桁数が、常に4,8,12,16のような4の倍数とは限りません。例えば2進数1001001は7桁しかありません。下の桁から数えて、1001と、100となり100の桁数は3つで、4桁より少ないように見えます。
 もし、この状態が考えづらいと感じるのであれば、01001001のように、先頭ビットに0を増やしてみてください。
先頭に0を増やしたからといって、数字に何か足しているわけではないため、これが原因で間違えることはありません。
ただし、後ろから0を増やしてはいけません。それだと元の数字から変わってしまいます。
「2の0乗の位」から順に、4ビットを1つのかたまりとして見ましょう。

 最初に示した10進数だと201、2進数だと11001001になる数字を16進数に変換します。
1100 1001の「2の0乗の位」から「2の3乗の位」は1001です。
まずはこれだけを16進数に変換します。1001、これだけを見たまま解釈すれば、桁は「2の0乗の位」から「2の3乗の位」であるとわかります。
この2進数4桁を10進数にすると、9だと分かります。
これを16進数で表すと、「16の0乗×9」となり、2進数11001001を16進数で表した数字の下から1桁目は「9」だと分かります。
同様に、2進数11001001の「2の4乗の位」から「2の7乗の位」である1100も計算していきます。
この「1100」は、11001001では、桁を上から見ると「2の7乗」から「2の4乗の位」に位置していますが、16進数への変換で4ビットをかたまりとして見た時、桁は「2の0乗の位」から「2の3乗の位」になります。
ということは、2進数1100は10進数で12と分かります。

私たちが無意識に使っている10進数は0~9の10個の数字を使って数を表しています。
2進数は0と1の2つで表しています。
そして16進数は0~9の10個と、A,B,C,D,E,Fの6個、合わせて16個の数字・アルファベットで数を表現しています。
16進数のAは10進数の10、Bは11、Cは12、Dは13、Eは14、Fは15にあたります。16進数の10として1桁に収めるには、0~9だけでなくA~Fのような文字も必要です。
ちなみに、2進数で2が使えないように、10進数で10を使うこともできません。位の数字が9から1増えたとき、次の位が1増えて、9だった位は0になります。
10進数において10はこのように表されています。

解説に戻ります。
2進数11001001を16進数で表した時の下から1桁目は「9」だと分かり、11001001の「1100」の部分は10進数で12だと分かりました。
10進数の12は16進数でCと表します。
これで16進数の下から2桁目は「C」だと分かりました。
よって、2進数11001001を16進数に変換すると、「C9」となります。

本当に「C9」なのか確かめます。
「C」は16の1乗が12個、「9」は16の0乗、すなわち1が9個あることを示しています。
検算すると
16×12=192
1×9=9
192+9=201
となり、11001001は16進数でC9だと確かにいえます。

なお、完全に10進数にしてから16進数にするやり方は桁数が多くなるほど不利になります。
例えば、32桁の2進数
1011 0101 0101 0110 1010 1101 0110 1010
があるとします。2の0乗から31乗まで、すべての桁の重みを計算して、その上で、16の累乗の値が何回入りそうか割り算していき…(後略)と、このようにすごく時間のかかる計算をすることになります。
それよりは、下から4ビットずつ、1つのかたまりとして見ていく方が早いはずです。

แสดงความคิดเห็น
ข้อสงสัยของคุณเคลียร์แล้วหรือยัง?

เมื่อดูคำถามนี้แล้ว
ก็จะเจอคำถามเหล่านี้ด้วย😉