16進数

2進数で書かれた数値は長くて判別しにくいので、16進数を使うことがあります。2進数と16進数との換算はとても簡単なので2進数の略記と考えてもよいでしょう。

2進数 16進数
100010100011 8A3

2進数を4桁ずつ区切って、16進の16個のなかから対応する数字に置き換えるだけです。

2進数 1000 1010 0011
16進数 8 A 3

16個の数字は 0~9 までは十進の数字をそのまま使い、足りない6つをアルファベットから借りてきます。

0 1 2 3 4 5 6 7 8 9 A B C D E F

または小文字で

0 1 2 3 4 5 6 7 8 9 a b c d e f

2進数と16進数の対応は次のようになっています。

2進数 16進数 10進数
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15

8までを覚えてしまえば、その上は 9=8+1(1000+1) 10=8+2(1000+10) 11=8+3(1000+11)... と考えればすぐに出せます。F が 1111 というのは覚えてしまいましょう。

ただBCDあたりは苦しいかもしれません。

11に曲線部分、0で11と離れた1は縦棒部分と小文字の形と関係づける覚え方もあります。

BCDE覚え方

でも E はぜひ F-1(1111-1) で覚えてください。

10進数と16進数の区別

16進数であるとはっきり区別する必要があるときには次の様にできます。

2426 → (2426)16 あるいは 2426(16)

C言語の表記法に習って頭に0xを付ける方が一般的です。

2426 → 0x2426

2進数と16進数の換算

2進数の桁数が 4の倍数でないときは前に 0 を補います。

(例)10100100010110
2進数 0010 1001 0001 0110
16進数 2 9 1 6

次の2進数を16進数に直してみます

(A) 1000000101001101
(B) 1110101100111100
(c) 1111001010111

次の16進数を2進数に直してみます

(D) 24
(E) a7
(F) 5e

16進数の用途

文字を番号で指定する文字コードは16進数で表します。1バイト(普通8ビットのこと)で表す数値を10進数にすると3桁の場合がでますが、16進数なら2桁で済むからです。

IPv6と呼ばれる次世代IPアドレスは、16進数で表すことになっています。今までのIPv4は10進数でした。

余談

日本語の数の数え方は4桁ずつ区切って、兆、億、万を使いますから、10000進数と考えることもできますし、3桁ずつコンマで区切って書く書き方は1000進数を使っていると考えることもできます。

聖愛中学高等学校
http://www.seiai.ed.jp/
改訂 Jun. 2011
Jun. 2009