教育・資格支援

2進数・16進数の変換は暗記不要!コツ2つで解ける【ITパスポート/基本情報】

2進数・16進数の変換方法

結論:2進数・16進数は「位の重み」と「4ビット区切り」だけで攻略できる

2進数・16進数の問題は、暗記ではなく「変換のやり方」を1度覚えるだけで解ける計算問題です。
2進数⇔10進数は「8・4・2・1」の位の重み、2進数⇔16進数は「4ビット区切り」。
この2つのコツさえ押さえれば、ITパスポート・基本情報の基数変換は確実に点が取れるボーナス分野に変わります。

今回はIPAの情報処理試験で頻出の「2進数と16進数」の変換方法を解説します。

「あー!もう2進数とか16進数とか無理!!」
と、問題を見た瞬間にあきらめていませんか?

ユウイチ
ユウイチ
はっきり言います。それ、もったいないです!基数変換は、やり方さえ覚えれば確実に点が取れる「ボーナス分野」なんです^^

英単語のような暗記は不要で、覚えるのは「位の重み」と「4ビット区切り」の2つのコツだけ。一緒にサクッとマスターしていきましょう。

この記事でわかること

・2進数・10進数・16進数の違いと使い分け
・2進数→10進数を一瞬で解く「位の重み」の考え方
・10進数→2進数をパズル感覚で解く「8421方式」
・2進数⇔16進数を最速で解く「4ビット区切り」
・本番形式の練習問題3問(解説付き)

※筆者:ユウイチ(エンジニア歴25年。会社員として20年以上ソフトウェアエンジニアを経験→フリーランス→法人化)。組込み開発の現場とIT研修講師の両方の経験をもとに解説します。


2進数とは?コンピュータの「母国語」

2進数(Binary)は「0」と「1」の2つの数字だけで数を表す方法です。


2進数の仕組み

コンピュータの中身は電気回路なので、扱える状態は「電気が流れている(ON)」「流れていない(OFF)」の2つだけ。このONを「1」、OFFを「0」に対応させたのが2進数です。

つまり2進数は、コンピュータにとっての母国語のようなものですね。

ポイント

・2進数は「0」と「1」だけで数を表す
・電気信号のON(1)/OFF(0)と相性が良い
・コンピュータ内部の数値はすべて2進数で処理されている


2進数の表記例

たとえばこんな表記になります。

・1010(10進数の10)
・1101(10進数の13)

「1010」を「せんじゅう」と読んでしまいそうですが、2進数では「いち・ぜろ・いち・ぜろ」。同じ並びでも、何進数として読むかで値がまったく変わるのがポイントです。


講師視点|2進数の「読み方」でつまずかないコツ

僕が初学者に説明する時は以下のような伝え方をしています。

ポイント

・電球のON/OFFだけで合図を送る「光のモールス信号」のイメージ
・指を「立てる/折る」の2状態だけで数を数える方法(片手で31まで数えられる)
・YES/NOしか答えられない相手に、質問を重ねて数を伝えるゲーム

「1010を『千十』と読んでしまう」というつまずき方をする方が結構多い印象です。10進数の読み方が体に染み付いているので、無理もありません。

対策はシンプルで、桁が1つ上がるごとに値が2倍になると最初に押さえてしまうこと。10進数が10倍ずつ増えるのと同じ理屈だと分かれば、混乱はほぼなくなります。


10進数とは?人間にとって自然な数え方

10進数(Decimal)は「0〜9」の10種類の数字を使う、僕たちが日常で使っている数え方です。説明不要ですね^^;

ただ、後で出てくる変換の土台になるので、1つだけ確認させてください。

10進数の「3524」という数字は、実はこういう構造になっています。

10³(1000)の位10²(100)の位10¹(10)の位10⁰(1)の位
3524

3000 + 500 + 20 + 4 = 3524。
つまり、「各桁の数字 × その位の重み」を合計したものが数の正体です。

普段は無意識にやっているこの「位の重み」の考え方が、そのまま2進数・16進数にも使えます。ここが今回の最大のカギです。


16進数とは?2進数を読みやすくする「圧縮表記」

16進数(Hexadecimal)は「0〜9」と「A〜F」の16種類の文字で数を表す方法です。


16進数の仕組み

1桁で0〜15までを表したいのですが、数字は0〜9の10個しかありません。そこで足りない分をアルファベットで補い、A=10、B=11、C=12、D=13、E=14、F=15と割り当てています。

10進数と16進数の対応はこの通りです。

10進数16進数10進数16進数
0088
1199
2210A
3311B
4412C
5513D
6614E
7715F

なぜ16進数が使われるのか

理由はシンプルで、2進数4桁=16進数1桁にぴったり対応するからです。

たとえば「11111111」という2進数8桁は、16進数なら「FF」のたった2文字。コンピュータの中身(2進数)を、人間が読み書きしやすい形に圧縮した表記が16進数だと考えてください。

表記するときは「0xFF」のように先頭に「0x」を付けて、16進数であることを明示するのが一般的です。

・0xA(10進数の10)
・0x1F(10進数の31)
・0xFF(10進数の255)


講師視点|16進数は「内部の表現」ではなく「人間向けの表記」

僕が初学者に説明する時は以下のような伝え方をしています。

ポイント

・2進数が「モールス信号の原文」、16進数が「読みやすく翻訳した略語」のイメージ
・長い住所をZIPコードで短く表すような「圧縮表記」という説明
・電話番号のハイフン区切り(数字そのものは変わらないが、区切ると格段に読みやすい)

「16進数はコンピュータ内部の表現方法だ」という誤解をする方が結構多い印象です。

内部で動いているのはあくまで2進数で、16進数は人間が読み書きしやすくするための表記にすぎません。「中身は2進数、見せ方が16進数」と区別しておくと、後で出てくる4ビット区切りの意味もスッと入ってきます。


2進数・10進数・16進数の比較

3つの進数を整理するとこうなります。

項目2進数(Binary)10進数(Decimal)16進数(Hexadecimal)
使用する数字0, 10〜90〜9, A〜F
位の重み2のべき乗(1, 2, 4, 8…)10のべき乗(1, 10, 100…)16のべき乗(1, 16, 256…)
主な使い手コンピュータ人間人間(2進数を読むとき)
桁数長くなりやすい普通短くて読みやすい

2進数・10進数・16進数の相互変換の全体マップ

どの進数も「各桁の数字 × 位の重み」の合計で値が決まる点は共通です。違うのは重みが2倍ずつ増えるか、10倍ずつか、16倍ずつかだけなんですね。


2進数から10進数への変換方法

ここから本題の変換です。まずは一番よく出る「2進数→10進数」から。


やり方:「1」が立っている位の重みを足すだけ

2進数の位の重みは、右から「1、2、4、8、16…」と2倍ずつ増えていきます。

変換のやり方は、「1」になっている桁の重みを足していくだけです。

例として、1010(2進数)を10進数にしてみましょう。

2³(8)の位2²(4)の位2¹(2)の位2⁰(1)の位
1010

「1」が立っているのは8の位と2の位なので、

8 + 2 = 10(10進数)

これだけです。10進数の「3524 = 3000+500+20+4」とまったく同じ理屈で、2進数は各桁が0か1しかないぶん、むしろ計算がラクなんです。

2進数の位の重み(8・4・2・1)を使った10進数への変換図

ポイント

・2進数の位の重みは右から「1、2、4、8、16、32、64、128…」
・「1」が立っている桁の重みを合計すれば10進数になる
・4桁なら「8・4・2・1」だけ覚えればOK

慣れないうちは時間がかかるかもしれませんが、「8421」を呪文のように覚えてしまえばすぐにできるようになります^^


10進数から2進数への変換方法

逆方向の「10進数→2進数」には、教科書的な方法と、僕のおすすめのパズル方式の2つがあります。


基本:2で割り続けて余りを下から読む

教科書的なやり方は、2で割り続けて余りを下から並べる方法です。10(10進数)を変換してみます。

10 ÷ 2 = 5 余り 0
5 ÷ 2 = 2 余り 1
2 ÷ 2 = 1 余り 0
1 ÷ 2 = 0 余り 1

余りを下から読むと 1010(2進数) になります。

確実な方法ですが、正直ちょっと面倒ですよね。そこで、パズル感覚でやれる簡単な方法を紹介します。


おすすめ:「8421」のパズル方式

それは、「8」「4」「2」「1」の数字を足し算で組み合わせる方法です。こんな問題をイメージしてください。

問題のイメージ

「8」と「4」と「2」と「1」。いずれかの数字を足して10にしてください。
ただし、各数字を使えるのは1回だけです。

答えは 8 + 2 = 10。あとは使った数字の桁に「1」を立てるだけです。

8の位4の位2の位1の位
1010

はい、1010(2進数)の完成。簡単でしょ?笑

もう1つやってみましょう。今度は「7」です。8は大きすぎて使えないので、4 + 2 + 1 = 7。使った3つの桁に1を立てて、

8の位4の位2の位1の位
0111

0111(2進数)になります。めっちゃ簡単です笑

試験会場で割り算を筆算するより、このパズル方式の方が圧倒的に速いです。大きい数字から「使えるか?」を判断していくのがコツですよ。


2進数と16進数の変換方法【4ビット区切りが最速】

次は試験でも実務でも一番よく使う「2進数⇔16進数」です。

ここで朗報です。2進数と16進数の変換に、10進数を経由する必要はありません。「4ビット区切り」を使えば一発で変換できます。


2進数→16進数:右から4桁ずつ区切る

2進数4桁(0000〜1111)は、ちょうど10進数の0〜15、つまり16進数の1桁(0〜F)に対応します。だから、右から4桁ずつ区切って、それぞれを16進数1文字に置き換えるだけでいいんです。

例:10101011(2進数)を16進数に変換

① 右から4桁ずつ区切る → 1010 | 1011
② それぞれを変換する → 1010は8+2=10でA、1011は8+2+1=11でB
③ 並べる → 0xAB(16進数)

10101011を4ビット区切りで0xABに変換する手順図

各ブロックの中では、さっき覚えた「8421」の足し算がそのまま使えます。新しく覚えることはほぼありません。


16進数→2進数:1文字を4桁に展開する

逆方向も同じ理屈です。16進数1文字を2進数4桁に展開して並べるだけ。

例:0x3C(16進数)を2進数に変換

① 3 → 0011(2+1=3)
② C → 1100(Cは12、8+4=12)
③ 並べる → 00111100(2進数)

ポイント

・2進数4桁=16進数1桁の対応を使えば10進数の経由は不要
・2進数→16進数:右から4桁ずつ区切って各ブロックを変換
・16進数→2進数:1文字ずつ4桁に展開して並べる
・ブロック内の計算は「8421」の足し算でOK


10進数→16進数:16で割って余りを下から読む

10進数から直接16進数にしたい場合は、2進数のときと同じ発想で「16で割り続けて余りを下から読む」方法を使います。

例:171(10進数)を16進数に変換

171 ÷ 16 = 10 余り 11(B)
10 ÷ 16 = 0 余り 10(A)

余りを下から読むと 0xAB(16進数) になります。

ちなみに、いったん2進数にしてから4ビット区切りで16進数にするルートでも解けます。自分が計算しやすい方を選んでください。


練習問題で定着させよう【本番形式・3問】

やり方がわかったら、あとは手を動かすだけです。

以下は、IPA過去問の傾向を踏まえて作成したオリジナルの練習問題です(IPA公式の過去問そのものではありません)。本番形式に慣れるための練習として活用してください。実際の過去問はIPA公式サイトで公開されています。すべて今回のコツだけで解けます。


練習問題1:2進数→10進数

(問題) 2進数「11001」を10進数で表したものはどれか。

ア 19
イ 25
ウ 27
エ 50

👉 正解を見る

正解:イ(25)

解説:5桁なので位の重みは左から「16、8、4、2、1」。「1」が立っているのは16・8・1の位なので、16 + 8 + 1 = 25です。アの19は16+2+1で「10011」を読んだ場合、ウの27は16+8+2+1で「11011」を読んだ場合の値。位の取り違えを狙った選択肢です。エの50は25の2倍で、桁を1つ多く数えてしまったときに出る値ですね。


練習問題2:10進数→2進数

(問題) 10進数「13」を2進数で表したものはどれか。

ア 1011
イ 1101
ウ 1110
エ 1111

👉 正解を見る

正解:イ(1101)

解説:パズル方式でいきましょう。「8・4・2・1を足して13にする」と考えると、8 + 4 + 1 = 13。使った8・4・1の桁に1を立てて「1101」です。アの1011は8+2+1=11、ウの1110は8+4+2=14、エの1111は8+4+2+1=15。逆方向に検算(2進数→10進数)すれば、選択肢の誤りはすぐ見抜けます。


練習問題3:2進数→16進数

(問題) 2進数「11110000」を16進数で表したものはどれか。

ア 0x0F
イ 0xE0
ウ 0xF0
エ 0xFF

👉 正解を見る

正解:ウ(0xF0)

解説:右から4桁ずつ区切ると「1111 | 0000」。1111は8+4+2+1=15でF、0000は0。並べて0xF0です。アの0x0Fは区切ったブロックの順番を逆にしてしまった場合の答え。イの0xE0は1111をE(14)と誤変換した場合、エの0xFFは下4桁の0000までFと読んでしまった場合の値です。区切る順番(左のブロックが上位)に注意しましょう。


実務での使われ方

16進数は試験のためだけの知識ではなく、開発の現場では日常的に登場します。メモリのアドレスやエラーコード、カラーコード(#FF5733のような色指定)、通信データのダンプ表示など、コンピュータの「中身」に近い情報はほぼ16進数で表記されます。

特に組込み開発では、レジスタの設定値を0xABのような16進数で読み書きし、頭の中で2進数に展開して「どのビットがONか」を確認する作業が頻繁にあります。僕も組込みの現場では、今回紹介した4ビット区切りの変換を今でも日常的に使っています。試験勉強がそのまま実務スキルになる、コスパの良い分野です。


まとめ:基数変換は「確実に点が取れるボーナス分野」

今回は2進数・16進数の変換方法を解説しました。

変換方向方法
2進数 → 10進数「1」が立っている位の重みを合計する
10進数 → 2進数「8421」のパズル方式(または2で割って余りを下から)
2進数 ⇔ 16進数4ビット区切りで直接変換(10進数の経由は不要)
10進数 → 16進数16で割り続け、余りを下から並べる

ポイント

・基数変換は暗記不要の「計算問題」。やり方を1度覚えれば一生使える
・2進数⇔10進数は「8421」、2進数⇔16進数は「4ビット区切り」
・迷ったら逆方向に変換して検算すればケアレスミスを防げる

慣れないうちは戸惑うかもしれませんが、慣れてしまえばめっちゃ簡単です。情報処理試験でこの問題が出てきたら、確実に正解しておきましょうね^^

基数変換をマスターしたら、次のステップは「2進数で負の数をどう表すか」です。こちらも試験頻出なので、セットで押さえておきましょう。

こちらもCHECK

【3分で理解】2の補数とは?2進数での負数の扱い方をわかりやすく解説

今回は、基本情報技術者試験でほぼ毎年出題される定番テーマ、「2の補数」と、コンピュータでの負数の表し方を、基礎からやさしく解説していきます。 「補数って言葉からして難しそう」「ビット反転して1足すのは ...

続きを見る

2進数・16進数の変換で手が止まってしまう方へ

「解き方はわかったけど、試験本番だと時間内に解ける気がしない」「わからない問題を気軽に質問できる相手がほしい」——計算問題は、手順のどこで詰まっているかを一度見てもらうだけで速さが変わります。

エンジニア歴25年・現役講師の僕が、あなたのつまずきに合わせて合格まで伴走する個別サポートを用意しました。学習計画づくりから、計算問題を素早く正確に解く手順の固め方まで一緒に進めます。

▶ 伴走型の個別サポートを見てみる

伴走型の個別サポート

ITパスポート・基本情報の独学がつらい人へ|つまずく5つの原因と個別サポート

「参考書は買った。でも開いたまま、今週も1ページも進んでいない」 「過去問は回しているのに、点数が伸びない」 そんな状態で止まっていませんか? 僕は企業の新入社員向け技術研修でメイン講師をしていて、毎 ...

続きを見る

まずは気軽に質問できる場所から、という方はこちら。無料のLINEコミュニティで、匿名OK・話を聞くだけでも大歓迎です。

▶ ITキャリアラボに参加する(無料)

ITキャリアラボ(無料)

【無料】ITの悩みを気軽に相談できるコミュニティ・ITキャリアラボ

IT業界を目指すあなたへ|「ITキャリアラボ」無料コミュニティのご案内 「IT業界に転職したいけど、何から始めればいいかわからない…」「資格の勉強が続かない…」「相談できる人がいない…」 そんな不安、 ...

続きを見る

  • この記事を書いた人
  • 最新記事

ユウイチ

会社員として20年以上ソフトウェアエンジニアを経験し、フリーランスを経て現在は1人社長として活動。組込みソフトウェア開発を軸に、キャリアは通算25年になりました。 現在はプログラミング講師やIT教育を中心に活動しながら、趣味でゲーム開発やシナリオ作成にも挑戦中。どちらも「創ることを通じて人を笑顔にしたい」という想いから始めた、大切なライフワーク。 「創造と教育で、人生に迷う人の自由な一歩を支援」を理念に発信中。

-教育・資格支援