前回は2進数の仕組みを見た。今回はもう一つ、パソコンの世界でよく登場する進法である16進数(hexadecimal)を取り上げる。2進数の考え方さえわかっていれば、16進数はそれほど難しくない。
16進法とは何か
16進法は、その名の通り、1桁で16種類の値を表せる数え方だ。
hexadecimalという英単語は、ギリシャ語で6を意味するhexaと、ラテン語で10を意味するdecimを組み合わせた言葉で、6+10=16を表している。日常会話では省略して「ヘックス(hex)」と呼ばれることも多い。
10進数は0〜9の10種類の数字を使う。だが、16進数は0〜9に加え、10〜15にあたる値をA・B・C・D・E・Fの6文字で表す。全部で16種類の記号を使って1桁を表現する。
| 10進数 | 16進数 | 2進数 |
|---|---|---|
| 0 | 0 | 0000 |
| 5 | 5 | 0101 |
| 9 | 9 | 1001 |
| 10 | A | 1010 |
| 11 | B | 1011 |
| 12 | C | 1100 |
| 13 | D | 1101 |
| 14 | E | 1110 |
| 15 | F | 1111 |
なぜ2進数ではなく16進数を使うのか
パソコンのアドレスや設定値を扱うとき、2進数のままだと桁数が多くなりすぎて人間には読みにくい。
たとえば、2進数の11110000という8桁の並びは、16進数ならF0の2桁で表せる。少ない文字数で大きな値を表現できることが、16進数が好まれる理由だ。
この変換がきれいに1対1で対応する理由は、16進数の1桁がちょうど2進数4桁分(4ビット)に相当するからだ。
この4ビットのまとまりはニブル(nibble)と呼ばれる。byte(バイト、かじる、の意味)をもじって「小さくかじる」というニュアンスでnibble(一口かじる)という言葉が当てられたとされ、8ビット=1バイトの半分というイメージにちょうど合う洒落た命名になっている。
4ビットあれば0000〜1111まで、つまり10進数の0〜15までを表現できるので、これが16進数の1桁とぴったり一致する。
桁の重みは16の累乗
計算の考え方自体は2進数や10進数とまったく同じで、各桁が16の累乗を表しているだけの違いだ。たとえば16進数の2Fは次のように計算する。
Fは10進数の15にあたるので、2Fは10進数の47と等しい。桁が増えるほど値は急激に大きくなり、たとえば16進数の4桁であるD4A3は、10進数では54,435になる。少ない文字数で大きな数を表せることがよくわかるだろう。
実務で16進数を完全にマスターする必要はない
16進数と10進数を暗算で自由自在に変換できるようになる必要はない。実際の作業では、電卓アプリの「関数電卓」表示に切り替え、基数を16進から10進に変更すれば一瞬で答えが出る。
大事なのは、パソコンのアドレス表記やメモリ、システムリソースの話で16進数が出てきたときに、それが何を意味しているのか感覚的にイメージできることだ。
次回は、ここまでの数値の話から離れて、パソコンを動かす電気そのものの基礎、電圧・電流・抵抗・ワットといった用語を整理していく。



