基本情報技術者試験対策(5)「2進数と16進数および8進数の変換(1)」

スポンサーリンク
IT系

16進数と8進数の仕組み

16進数は、16で桁上がりする数え方である。 16進数では、15までを1桁で表さなければならないので、 A~Fを数字として使って、 0、 1、2、3、4、5、6、 7、8、9、 A、B、C、D、E、F、 10、 ・・・・・・と数える。 16進数のA~Fは、10 進数の10~15に相当する。 2進数と同様に、 16進数でも10を「いちぜろ」と読む。 5Aなら、 「ごえい」 と読む

8進数は、8で桁上がりする数え方である。 8進数では、0、 1、2、3、4、5、6、 7, 10, ・・と数える。 10進数の8と9は、 使われない。 2進数や16進数 と同様に、 8進数でも10を 「いちぜろ」、36を 「さんろく」と読む。 2進数の代用表現として16進数と8進数が使われるのは、相互に変換が容易だからである。 16進数の場合は、2進数の4桁が、16進数の1桁に対応する。 2進数の4桁で表せる0000~1111の情報も、 16進数の1桁で せる0~Fの情報も、全部で16通りだからである。 8進数の場合は、2進数の 一桁が8進数の1桁に対応する。 2進数の3桁で表せる000~111の情報も、 8進数の1桁で表せる0~7の情報も、 全部で8通りだからである。

2進数・8進数・16進数の対応表

10進数2進数(Binary)8進数(Octal)16進数(Hexadecimal)
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

2進数を16進数に変換する

2進数を16進数に変換する手順は、「2進数を下位桁から4桁ずつ区切って、 それぞれを1桁の16進数に変換する」 である。 4桁ずつ区切った2進数を16進数 に変換する手順は、 2進数を10進数に変換する手順と同様に、 「各桁の数字に、 桁の重みを掛けて、集計する」 である。
ただし、 集計結果が10~15になった場合は、それをA~Fに置き換える。

下図は、 01101100という2進数を16進数に変換する手順である。 下位桁から4ビットずつ0110と1100に区切り、 それぞれの部分で桁の重みと、 桁の数字を掛けて集計して、6Cという16進数に変換できた。

区切り位置2進数桁の重み計算式(重み×数字)合計(10進数)16進数
下位4ビット右側11008, 4, 2, 1(8×1) + (4×1) + (2×0) + (1×0)12C
上位4ビット左側01108, 4, 2, 1(8×0) + (4×1) + (2×1) + (1×0)66

4桁の2進数の桁の重みは、下位桁から順に1、2、4、8である。 これを「いち・にい・よん・ぱあ」と覚えておこう。 例えば、 0110は、 「いち・にい・よん・ぱあ」 の 「よん」 と 「にい」 の桁が1なので、 4+2=6になる。 1100は、「いち・にい・よん・ぱあ」 の 「ぱあ」 と 「よん」 の桁が1なので、8+4=12になる。 10進数の12は、 10から数えて10→11→12なので、 16進数をA→B→Cと指折り数えて、 Cであることがわかる。

2進数を8進数に変換する

2進数を8進数に変換する手順は、 「2進数を下位桁から3桁ずつ区切って、それぞれを1桁の8進数に変換する」 である。 3桁ずつ区切った2進数を8進数に変換する手順は、2進数を10進数に変換する手順と同様に、「各桁の数字に、 桁の重みを掛けて、集計する」 である。 3桁の2進数なので、集計した結果0~7になる。

下図は、110111011という2進数を8進数に変換する手順である。 下位桁から3ビットずつ110と111と011に区切り、 それぞれの部分で桁の重み (いち・にい・よん)と、桁の数字を掛けて集計して、673という8進数に変換できた。

区切り位置2進数桁の重み計算式(重み×数字)合計(10進数)8進数
下位3ビット右側1104, 2, 1(4×1) + (2×1) + (1×0)66
中位3ビット真ん中1114, 2, 1(4×1) + (2×1) + (1×1)77
上位3ビット左側0114, 2, 1(4×0) + (2×1) + (1×1)33

参考)情報処理教科書 出るとこだけ!基本情報技術者[科目A][科目B]2025年版

コメント

タイトルとURLをコピーしました