基本情報技術者試験をはじめ、IT資格の定番テーマ「進数変換」の考え方を整理します。
進数変換は暗記科目ではなく、「2進数4桁=16進数1桁」という対応さえ体に入れば、試験で問われる大半はその場で解ける分野です。基数変換・補数・シフト演算という頻出3テーマも、この対応関係を土台にすると別々の暗記ではなく一続きの理解になります。
そして、ここで身につく感覚は試験だけのものではありません。色コード、ファイルのバイト表示、権限の数値表記など、実務で目にする数字の意味がそのまま読めるようになります。
コンピュータの回路は「電圧が高い」「低い」の2つの状態しか安定して扱えません。この2状態をそのまま1と0に対応させたのが2進数です。8進数・16進数は、2進数を人間が読みやすいようにまとめた表記で、特に16進数は2進数4桁(0000〜1111)をちょうど1文字(0〜F)で表せるため、メモリアドレスや色コードなど実務で幅広く使われています。
「なぜわざわざ16進数を使うのか」は、桁数を見ると納得できます。1バイト(8ビット)を2進数で書くと 11111111 と8桁ですが、16進数なら FF の2桁で済みます。しかも4桁ずつ機械的に区切るだけで相互変換できるため、10進数のように割り算をしなくてよいのです。人間が読み書きしやすく、かつ2進数との対応が崩れない——この2点が16進数が選ばれる理由です。
進数変換の計算が速い人は、暗算が得意なのではなく、次の対応を覚えているだけです。
| 2進数 | 16進 | 2進数 | 16進 |
|---|---|---|---|
| 0000 | 0 | 1000 | 8 |
| 0001 | 1 | 1001 | 9 |
| 0010 | 2 | 1010 | A |
| 0011 | 3 | 1011 | B |
| 0100 | 4 | 1100 | C |
| 0101 | 5 | 1101 | D |
| 0110 | 6 | 1110 | E |
| 0111 | 7 | 1111 | F |
この16行が入っていれば、11010110 のような値も「1101」「0110」に区切って D6 と即答できます。10進数を経由する必要はありません。逆方向も同じで、3F なら「3=0011」「F=1111」で 00111111 です。
10進数との変換だけは割り算が要りますが、こちらも「2で割った余りを下から並べる」という手順を1つ覚えるだけです。全部覚えようとせず、まず上の表、次に割り算の手順、という順序で進めるのが結局いちばん速く定着します。
| 出題テーマ | ポイント |
|---|---|
| 基数変換 | 2進⇔10進⇔16進の相互変換。2で割った余りを並べる/16進は4桁ずつ区切る、が基本手順。 |
| 補数表現 | 負の数を2進数でどう表すか(2の補数)。「全ビット反転して+1」がよく問われます。 |
| シフト演算 | 左シフトは2倍、右シフトは1/2倍に相当(符号の扱いに注意)。 |
手順を覚えたら、こでっとの進数変換に同じ数値を入力して答え合わせをすると、計算ミスの癖に気づきやすくなります。
Webでよく見る #FF0000 のような色コードも16進数です。赤・緑・青それぞれの強さを00〜FFの2桁で表しています。進数の感覚が身につくと、カラーコード変換で扱う値もすんなり読めるようになります。
進数変換は「慣れ」で伸びる分野なので、問題集を繰り返し解くのが王道です。試験全体を体系的に対策したい場合は、参考書やオンライン講座を使う方法もあります。
進数の感覚は、資格を取ったあとの実務でそのまま効いてきます。代表的なのが次の3つです。
chmod 755 の755は8進数です。各桁が「所有者・グループ・その他」に対応し、それぞれを2進数3桁(読み取り4・書き込み2・実行1)で表しています。7は111で全部許可、5は101で読み取りと実行だけ、と読めます。U+3042 のように16進数で示されます。文字化けの原因を追うときも、バイト列を16進数で読む場面が出てきます。つまり進数変換は、試験のためだけに覚える独立した単元ではなく、この先いろいろな場面で顔を出す共通言語です。ここで丁寧にやっておくと、あとの学習が軽くなります。
どれも「手順は分かっているのに間違える」タイプのミスなので、覚え直すより、解いた直後にこでっとの進数変換で答え合わせをして、自分がどこで転ぶかを見つけるほうが効きます。
回路が安定して区別できる状態が「電圧が高い/低い」の2つだけだからです。この2状態を1と0に対応させたのが2進数です。3以上の状態を扱おうとすると、わずかな電圧のゆらぎで値を誤読するリスクが上がるため、確実性を優先して2状態が選ばれています。
大きく3種類です。1つ目が基数変換(2進・10進・16進の相互変換)、2つ目が2の補数による負数表現、3つ目がシフト演算です。いずれも手順が決まっているので、繰り返し解いて手を慣らせば確実に得点できます。計算そのものより、桁数の指定や符号の扱いといった条件の読み落としで失点することが多い分野です。
直接つながっています。#FF0000 は赤・緑・青の強さをそれぞれ00〜FFの16進2桁で表したもので、FFは10進数の255、つまり最大値です。進数の感覚があると「#808080は各成分が128だから中間のグレー」と読めるようになります。
試験対策としては必要です。基本情報技術者試験のCBT方式では電卓が使えないため、手計算で解けることが前提になります。ただし実務では変換ツールを使って構いません。大事なのは値の意味が読めることで、計算そのものを速くすることが目的ではありません。