重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

はじめまして。
高校の情報の授業で「2進数・10進数・16進数」を勉強しています。
どうしても2進数から16進数への変換、あるいは、16進数から2進数への変換の方法がわかりません・・・

初心者でも分かりやすい解説をお願いします。

A 回答 (4件)

2進数の各桁を、右から4桁毎に区切って、その4桁を右から1,2,4,8という具合に割り当てます。


その4桁を、16進数の1文字に対応させて、そのまま置き換えるだけです。
これを、2進数の4桁毎に、繰り返せば複数桁の16進数になります。

逆に、16進数を2進数にする場合は、16進数を1桁ずつに分解し、それぞれを2進数4桁に置き換えて、全体を繋げれば完成です。

2進数:16進数:中身
0000=0=0そのまま
0001=1=1そのまま
0010=2=2そのまま
0011=3=2+1
0100=4=4そのまま
0101=5=4+1
0110=6=4+2
0111=7=4+2+1
1000=8=8そのまま
1001=9=8+1
1010=10=8+2
1011=11=8+2+1
1100=12=8+4
1101=13=8+4+1
1110=14=8+4+2
1111=15=8+4+2+1
    • good
    • 2
この回答へのお礼

分かりやすい説明、ありがとうございました!!
おかげで理解することができました。

お礼日時:2007/02/23 20:07

2進数で表わされたある数Nを16進数に直すとき、


N=a(n)2^n+a(n-1)2^(n-1)+a(n-2)2^(n-2)+…+a(2)2^2+a(1)2+a(0)
(a(i)は0か1)
と表わされているとすると、2の指数が0~3,4~7,8~11,12~15,…
と4ずつに区切って考えると良いと思います。
0~3の部分
1+2+2^2+2^3=15なので、a(3)2^3+a(2)2^2+a(1)2+a(0)は15以下となる。
4~7の部分
2^4+2^5+2^6+2^7=(1+2+2^2+2^3)2^4=15・16なので、16の係数は15以下
となる。
8~11の部分
2^8+2^9+2^10+2^11=(1+2+2^2+2^3)2^8=15・16^2なので、16^2の係数は
15以下となる。
・・・
と続けていけば、16^nの係数の部分が15以下になる。
このように、2の指数を4ずつに区切っていけば、16進数の各桁の数が
得られる。

16進数を2進数に直すときは、
N=b(n)16^n+b(n-1)16^(n-1)+…+b(2)16^2+b(1)16+b(0)
(b(i)は0以上15以下)
と表わされているとすると、16=2^4なので、各桁のb(i)も2進数に
すれば、全部2^kの形になるので、これをまとめれば2進数で表せる。
16進数といっているのに、「16」と10進数で表すのは変ですが、
ここでは理解しやすくするためにこう書いた。

プログラム作成が目的なのかわかりませんが、仕組みを理解するために
は、いろいろ実際の数字で練習して、感覚をつかむと良いと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました!!
とにかく実践ですね。がんばってみます。

お礼日時:2007/02/23 20:08

2進数から16進数への変換は、2進数を4桁(4bit)ごとに区切って変換します。

例えば、(010001)2の場合は、

0010,0001
0001 -> 1
0010 -> 2

である事から、(010001)2 -> (12)16となります。
また、1111111の場合も同様に、

0111,1111
↑  ↑
7 F

により、(1111111)2=(7F)16といった形で変換可能です。
なお、2進数を4桁ずつで区切って上位の不足分はすべて0で補います。

次に、16進数から2進に変換するとき、今度は逆に、16進数の各桁を
4桁の2進数に置き換えます。
例えば、5Fの場合、

5 = 0101
F = 1111
であることから、
(5F)16 = (01011111)2 = (10111111)2といった形になります。

なお、上位の位取りの0は全て除去します。
    • good
    • 0
この回答へのお礼

ありがとうございました!!
試してみます。

お礼日時:2007/02/23 20:09

2進数4桁と16進数1桁は1対1に対応しています。


2進数4桁で0~15まで表現できます。(1111)2=(15)10
16進数1桁で0~15まで表現できます。
なので、
16進数⇔2進数⇔10進数
 0⇔0000⇔0
 1⇔0001⇔1
 2⇔0010⇔2
 3⇔0011⇔3
 4⇔0100⇔4
 5⇔0101⇔5
 6⇔0110⇔6
 7⇔0111⇔7
 8⇔1000⇔8
 9⇔1001⇔9
 A⇔1010⇔10
 B⇔1011⇔11
 C⇔1100⇔12
 D⇔1101⇔13
 E⇔1110⇔14
 F⇔1111⇔15
10⇔10000⇔16
2進数4桁を区切りとして機械的に変換できます。
    • good
    • 1
この回答へのお礼

ありがとうございました!!
4桁で区切れば変換できるんですね。分かりました。

お礼日時:2007/02/23 20:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!