人生を自由に楽しむために会社員を辞め、フリーランスを経て法人化し、現在は一人社長をしています。ユウイチです。
今回はIPAの情報処理試験にもよく出てくる「2進数と16進数」について解説します。
「あー!もう2進数とか16進数とか無理!!」
と感じて問題を見た瞬間にあきらめてしまっている人いるかと思うのですが、はっきり言います!

2進数とか16進数って理解してしまえば確実に取れる問題です。
特にITパスポート試験や基本情報技術者試験では基数変換(2進数→10進数、2進数→16進数など)さえできれば取れますので、ここでしっかり理解しておきましょうね。
それではまず、それぞれの特徴から説明していきます。
2進数(Binary)とは?
2進数は「0」と「1」の2つの数字だけで表される数値の表現方法です。
特徴
- コンピュータの基本的な数値表現
- 1桁に「0」と「1」だけを使用
- 電気信号のON(1)/OFF(0)と相性が良い
例:2進数の表記
- 1010(10進数の10)
- 1101(10進数の13)
10進数(Decimal)とは?
10進数は「0~9」の10種類の数字を使って表される数値表現で、日常的に使う数字です。説明不要ですね^^;
特徴
- 人間にとって自然な数値表現
- 1桁に0~9までの数字を使用
例:10進数の表記
- 10(10進数)
- 25(10進数)
16進数(Hexadecimal)とは?
16進数は「0~9」と「A~F」の16種類の数字を使って表される数値表現です。
特徴
- 1桁に0~9,A(10)~F(15)までを使用
- 2進数との相性が良く、プログラミングで頻繁に使用される(特に組込み)
- 2進数と比べて桁数が少なくなるため、視認性が向上
例:16進数の表記
- 0xA(10進数の10)
- 0x1F(10進数の31)
- 0xFF(10進数の255)
2進数、10進数、16進数の比較
項目 | 2進数(Binary) | 10進数(Decimal) | 16進数(Hexadecimal) |
---|---|---|---|
使用する数字 | 0, 1 | 0~9 | 0~9, A~F |
位取り | 2のべき乗(1, 2, 4, 8, 16…) | 10のべき乗(1, 10, 100…) | 16のべき乗(1, 16, 256…) |
人間向け? | わかりにくい | わかりやすい | 多少わかりにくいが視認性が良い |
コンピュータ向け? | とても適している | 不向き | 適している |
2進数から10進数への変換方法
2進数を10進数に変換するには、各桁の値を2のべき乗として考え、合計を求めます。
といってもわかりにくいかもしれないので、まずは普段使っている10進数の説明をしますね。
普段から使用する10進数では1の位、10の位、100の位、1000の位って自然と身についているので、例えば「3524」という数字をすぐに理解できるのですが、「3521」を紐解くと
10³(1000)の位 | 10²(100)の位 | 10¹(10)の位 | 10⁰(1)の位 |
---|---|---|---|
3 | 5 | 2 | 4 |
3 × 10³(1000)の位 = 3000
5 × 10²(100)の位 = 500
2 × 10¹(10)の位 = 20
4 × 10⁰(1)の位 = 4
----------------
合計:3000 + 500 + 20 + 4 = 3524(10進数)
となっています。
ただ、これは身についているので、いちいちこんなことを考えないわけです。
例:1010(2進数)を10進数に変換
次に2進数である1010を考えてみましょう。基本的に考え方は同じです。
2³(8)の位 | 2²(4)の位 | 2¹(2)の位 | 2⁰(1)の位 |
---|---|---|---|
1 | 0 | 1 | 0 |
1 × 2³(8の位) = 8
0 × 2²(4の位) = 0
1 × 2¹(2の位) = 2
0 × 2⁰(1の位) = 0
----------------
合計:8 + 0 + 2 + 0 = 10(10進数)
となります。
「1」になっている桁を足していくだけですね。
なんとなくイメージがつかめたでしょうか?
なれないうちは時間がかかるかもしれませんが、慣れてきたらすぐにできるようになります^^
10進数から2進数への変換方法
10進数を2進数に変換するには、2で割り続け、余りを下から並べる方法を使います。
例:10(10進数)を2進数に変換
10 ÷ 2 = 5 余り 0
5 ÷ 2 = 2 余り 1
2 ÷ 2 = 1 余り 0
1 ÷ 2 = 0 余り 1
→ 下から読むと 1010(2進数) になります。
これで変換できるのですが、パズル感覚でやれる簡単な方法を紹介しますね。
それは、「8」、「4」、「2」、「1」の数字を使って足し算で考える方法です。たとえば、先の例でやった10(10進数)を2進数に変換する場合はこんな具合になります。
簡単な方法
「8」と「4」と「2」と「1」。いずれかの数字を足して10にしてください。
ただし、使える回数は1回だけです。
こんな問題が出されるイメージです笑
そして、各数字を使える回数は1回という制限があるので、8 + 2 = 10 になります。あとは使った数字の桁に1を立てるだけ。
8と2を使ったので、以下になります。
2³(8)の位 | 2²(4)の位 | 2¹(2)の位 | 2⁰(1)の位 |
---|---|---|---|
1 | 0 | 1 | 0 |
簡単でしょ?笑
もういっこやってみましょう。それでは、7を変換してみます。
簡単な方法
「8」と「4」と「2」と「1」。いずれかの数字を足して7にしてください。
ただし、使える回数は1回だけです。
使える回数は1回なので 4 + 2 + 1 = 7 になります。4と2と1を使ったので、それぞれに1を立てて、
2³(8)の位 | 2²(4)の位 | 2¹(2)の位 | 2⁰(1)の位 |
---|---|---|---|
0 | 1 | 1 | 1 |
めっちゃ簡単です笑
この方法使ってみてくださいね^^
16進数への変換方法
2進数→16進数の変換
2進数はいったん10進数にしてから16進数に変換します。
慣れてきたら一発でできるのですが、慣れないうちはまず10進数にしましょう。
では1010(2進数)を見ていきます。先の例でやったように1010(2進数)は10(10進数)でした。
16進数は0~15までを一桁で表すので、以下のようになるんですね。
10進数 | 16進数 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
10 | A |
11 | B |
12 | C |
13 | D |
14 | E |
15 | F |
なので、1010(2進数)→10(10進数)→A(16進数)となります。
実際は2進数8桁を変換することが多いですが、8桁になった場合は、4桁ずつに区切って変換します。
例:10101011(2進数)を16進数に変換
1010 1011 → 10(10進数) 11(10進数) → 0xAB(16進数)
となります。
16進数は「0x」を先頭につけるのが一般的です。
10進数→16進数の変換
10進数を16進数に変換するには、16で割り続け、余りを下から並べる方法を使います。
10進数→2進数のときにパズル感覚の方法を紹介したのですが、16進数は簡単にできないので、割り算と余りで求めましょう。
例:171(10進数)を16進数に変換
171 ÷ 16 = 10 余り 11(B)
10 ÷ 16 = 0 余り 10(A)
→ 下から読むと 0xAB(16進数) になります。
まとめ
今回は「2進数と16進数」について説明しました。まとめると以下になります。
変換方向 | 方法 |
2進数 → 10進数 | 各桁の値を2のべき乗として合計する |
10進数 → 2進数 | 2で割り続け、余りを下から並べる(パズル感覚の方法もおすすめ!) |
2進数 → 16進数 | 2進数→10進数→16進数の順で |
10進数 → 16進数 | 16で割り続け、余りを下から並べる |
慣れないうちは戸惑うこともあるかもしれませんが、慣れてしまえばめっちゃ簡単なので、情報処理試験でこの問題が出てきたら確実に正解しておきましょうね^^
それではまた!