●10進数への変換
X進数の値が10進数でいくつになるかを確認するには、
各桁の値 と その桁の重みをかけた結果を足します。
小数点以上の桁には、下位桁から順に「X^0、X^1、X^2・・・」と重みを与える為、以下のようになります。
# 16進数の値「12A」の場合
(12A)16 = (1 * 16^2) + (2 * 16^1) + (A * 16^0) = (1 * 256) + (2 * 16) + (10 * 1) = 256 + 32 + 10 = (298)10
# 2進数の値「1100100」の場合
(1100100)2 = (1 * 2^6) + (1 * 2^5) + (0 * 2^4) + (0 * 2^3) + (1 * 2^2) + (0 * 2^1) + (0 * 2^0) = 64 + 32 + 0 + 0 + 4 + 0 + 0 = (100)10
小数点以上の桁には、上位桁から順に「X^-1、X^-2、X^-3・・・」と重みを与える為、以下のようになります。
# 16進数の値「0.4B」の場合
(0.4B)16 = (4 * 16^-1) + (B * 16^-2) = (4 * 1/16) + (11 * 1/16^2) = (4/16 ) + (11/256 ) = ( 75/256) = (0.29296875)10
# 2進数の値「0.01011」の場合
(0.01011)2 = (0 * 2^-1) + (1 * 2^-2) + (0 * 2^-3) + (1 * 2^-4) + (1 * 2^-5) = 0 + 1/4 + 0 + 1/16 + 1/32 = 8/32 + 2/32 + 1/32 = 11/32 = (0.34375)10
X進数を10進数に変換するためには、それぞれの値に「基数^n」を掛けたものを足すことで変換できることが分った。
・・・X^2、X^1、X^0(小数点)X^-1、X^-2、X-3・・・
例えば(3.B)16の場合は、「(3 * 16^0) + (11 * 16^-1)」と計算できる。
●10進整数から2進数への変換
10進数の整数部を2進数に変換するには、2進数の下位から n桁目 が 2^(n-1) の位であることを利用して、10進数を 2のべき乗(2の○乗)の和に分解します。つまりは「2の何乗」で表現できる数字の和で表現をします。
(59)10 = 32 + 16 + 8 + 2 + 1 = 2^5 + 2^4 + 2^3 + 2^2+ 2^1 + 2^0 = (1 * 2^5) + (1 * 2^4) + (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (1 * 2^0) = (111011)2
上記方法は成れないときついですね。
2で順次割り、商が「0」に成るまで繰り返し計算する方法もあります。
2)59 あまり:1 2)29 あまり:1 2)14 あまり:0 2) 7 あまり:1 2) 3 あまり:1 2) 1 あまり:1 0 上記から答えは(111011)2となる
●10進小数から2進数への変換
10進数の小数部を2進数に変換するには、2進数の小数点以下のn桁目が 2^-n の位であることを利用して、10進数を 2^-nのべき乗の和に分解します。
(0.59375)10 = 0.5 + 0.0625 + 0.03125 = 2^-1+ 2^-4 + 2^-5 = (1 * 2^-1) + (0 * 2^-2) + (0 * 2^-3) + (1* 2^-4) + (1* 2^-5) = (0.10011)2
この方法も簡単ではない。まずはそんな少数を「2^-nのべき乗の和」なんかに出来るか!!って言いたいので他の方法も。
小数部に2をかけていき、小数部が「0」になるまで繰り返す。
0.59375 × 2 = 1.1875 0.1875 × 2 = 0.375 0.375 × 2 = 0.75 0.75 × 2 = 1.5 0.5 × 2 = 1.0 (0.59375)10 = (10011)2
10進数から16進数へ変換をする場合には、上述「10進数から2進数への変換」のうち「2」を「16」に変えて計算します。
●16進数と2進数の相互変換
2進数を16進数にしたり、16進数を2進数に変換するには、16進数の「1桁」が2進数の「4桁」に対応していることを利用します。
2進数 ⇒ 16進数
次のように、下位桁から「4桁」ずつのブロックにして、そのブロック毎を2進数で計算し、それに対応する16進数を割り当てます。4桁に満たないときは、上位桁に「0」を補います。
(10110111100100)2
= (10 1101 1110 0100)2
= (0010 1101 1110 0100)2
= (2 D E 4)
= (2DE4)16
16進数 ⇒ 2進数
16進数1桁に対応する4桁の二進数を割り当てます。
(2DE4)16 = (0010 1101 1110 0100) = (10110111100100)2
●16進小数と10進小数の相互変換
16進小数と10進小数の相互変換を行なうには、10進小数と2進小数の相互変換、2進小数と16進小数の相互変換を組み合わせると誤りが少なくなります。
10進小数 ⇒ 16進小数
10進小数を2進小数に変換し、次に2進小数を16進小数に変換します。
2進小数を16進小数に変換するとき、先頭から4ビットのブロックにわけ、各ブロックを16進数に変換します。4桁に満たないブロックは、下位桁に「0」を補います。
(0.71875)10 (10進小数を2進小数に変換) 0.71875 × 2 = 1.4375 0.4375 × 2 = 0.875 0.875 × 2 = 1.75 0.75 × 2 = 1.5 0.5 × 2 = 1.0 = (0.10111)2 ( = (0. 1011 1000)2 = (0. B 8) = (0.B8)16
16進小数 ⇒ 10進小数
16進小数を2進小数に変換し、次に2進小数を10進小数に変換します。
(0.B8)16 (16進小数を2進小数に変換) = (0.1011 1000)2 (2進小数を10進小数に変換) = (1 * 2^-1) + (0 * 2^-2) + (1 * 2^-3) + (1 * 2^-4) + (1 * 2^-5) = (1/2) + (1/8) + (1/16) + (1/32) = (16/32) + (4/32) + (2/32) + (1/32) = 23/32 = (0.71815)10
「情報処理教科書 基本情報技術者2011年版」を参考に作成いたしました。
コメント