16進数とは、0から9までの10個の数字と、AからFまでの6個のアルファベットを使って数値を表現する方法である。
16進数では、ひとつの桁において0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、Fと並ぶ16個の数値を扱うことができる。「A」が10進数における「10」に相当し、「F」は同じく10進数の「15」に相当する。「F」の次は位取りをして1桁上がり、「10」となる。
日常生活においては、0から9までの10個の数字を使った10進数が主に使われているが、コンピュータでは2進数などと並んで16進数を扱うことも多い。例えばASCIIコードや日本語の文字コード、色を示すカラーコードなどは16進数を使用している。
たとえば、16進数の3F7Bは、10進数に変換すると4096×3+256×15+16×7+1×11=16251になる。
また、10進数の12345を16進数に変換するには、次のように計算する。
12345=4096×3 余り57
57=256×0 余り57
57=16×3 余り9
9=1×9 余り0
よって、12345は16進数では3039になる。
その数値が16進数であることを示すために、3F7B(16)や0x3F7B、3F7Bh、&h3F7B、$3F7Bのように記述することがある。なお、AからFまでの6個のアルファベットは、小文字で表記してもよい。
(hexadecimal から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/12/12 15:14 UTC 版)
十六進法(じゅうろくしんほう、 英: hexadecimal)とは、十進数の16を底とし、底およびその冪を基準にして数を表す方法である。
位取り記数法(N進位取り記数法)では、まず基数(base。集合の基数(cardinal)とは異なる)となる自然数 N に対して、
0、1、・・・、N-1
の数値に対応する数字の記法を対応させるので、下表のようにする(A〜F を英小文字にする場合もある)。
| 十進法 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 十六進法 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
次に、これらを用いて
![]()
A - F の文字を用いて 9 以上の数字を表現する方法はコンピューター黎明期にはまだ一般的ではなかった。
| 時期 | 機種 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|
| 1950年代 | Bendix-14など複数 | 0 | 1 | 2 | 3 | 4 | 5 |
| 1950 | SWAC[4] | u | v | w | x | y | z |
| 1956 | Bendix G-15[5][4] | u | v | w | x | y | z |
| 1952 | ILLIAC I[6][4] | K | S | N | J | F | L |
| 1956 | Librascope LGP-30[7][4] | F | G | J | K | Q | W |
| 1957 | Honeywell Datamatic D-1000[4] | b | c | d | e | f | g |
| 1967 | Elbit 100[4] | B | C | D | E | F | G |
| 1960 | Monrobot XI[4] | S | T | U | V | W | X |
| 1960 | NEC NEAC 1103[8] | D | G | H | J | K | V |
| 1964 | Pacific Data Systems 1020[4] | L | C | A | S | M | D |
| 1980 | Б3-34(ソビエトのプログラム電卓) | − | L | C | Г | E | " "[9] |
2022年4月1日に発行されたRFC 9226によって提案された新しい十六進数の表記法として、Bioctal がある(ジョークRFCも参照)。
この表記法では、十六進数を以下の表のように表記することとしている。 英字は基本的に小文字で表記する。
| 0 から 7 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 から 15 | c | j | z | w | f | s | b | v |
これらの文字は、表の上段の数字と(そのままで、あるいは九十度回転させて)形が似ている英字、かつ見分けにくい L(エル)の小文字や母音などを避けて決められている。 上記表では8個の項目で折り返しているため、上下の数値の下三ビットは同じ値になる。 これにより、十六進数を八進数や二進数に変換するときの認知心理学的負荷を軽減させることができるとしている。
| 十六進表記 | 十二進表記 | 十進表記 | 八進表記 | 二進表記 |
|---|---|---|---|---|
| (0)16 | (0)12 | (0)10 | (0)8 | (0)2 |
| (1)16 | (1)12 | (1)10 | (1)8 | (1)2 |
| (2)16 | (2)12 | (2)10 | (2)8 | (10)2 |
| (3)16 | (3)12 | (3)10 | (3)8 | (11)2 |
| (4)16 | (4)12 | (4)10 | (4)8 | (100)2 |
| (5)16 | (5)12 | (5)10 | (5)8 | (101)2 |
| (6)16 | (6)12 | (6)10 | (6)8 | (110)2 |
| (7)16 | (7)12 | (7)10 | (7)8 | (111)2 |
| (8)16 | (8)12 | (8)10 | (10)8 | (1000)2 |
| (9)16 | (9)12 | (9)10 | (11)8 | (1001)2 |
| (A)16 | (A)12 | (10)10 | (12)8 | (1010)2 |
| (B)16 | (B)12 | (11)10 | (13)8 | (1011)2 |
| (C)16 | (10)12 | (12)10 | (14)8 | (1100)2 |
| (D)16 | (11)12 | (13)10 | (15)8 | (1101)2 |
| (E)16 | (12)12 | (14)10 | (16)8 | (1110)2 |
| (F)16 | (13)12 | (15)10 | (17)8 | (1111)2 |
二進表記から十六進表記に変換する方法を、以下に示す。
この方法は桁数に関わらず通用する。例えば、(100110010111010)2 は (0100, 1100, 1011, 1010)2 であるから、(4CBA)16 となる。
小数部分の変換方法は、次のとおり。
したがって、(111010.110101)2 = (3A.D4)16 である。この方法は桁数に関わらず通用する。
正の整数 m を十進法から十六進法に変換するのは次のようにする。
余りを求めた順の逆に並べると、それが十六進法に変換された結果になる。
例:36864を十六進法に変換する。
16)36864 36864=160×36864
16) 2304…0 36864=161× 2304+160×0
16) 144…0 36864=162× 144+161×0+20×0
9…9 36864=163× 9+162×0+21×0+20×0
よって 3686410 = 900016 である。
割り切れない小数の循環部は下線で示す。「10」となる十六には因数に奇数が含まれていないため、1/3や1/5といった「1÷奇数」が全て割り切れない。小数を分数化しても、「m/奇数」となる小数が全く現れない。従って、偶数も、1/6{1÷(2×3)}や1/A{1÷(2×5)}といった「1÷奇数で割り切れる偶数」は割り切れない。六の倍数も十の倍数も逆数にすると全て割り切れないので、単位分数は無限小数が充ち溢れ、逆数が有限小数になる例は2の冪数だけになる。
| 十六進小数 | 六進既約分数 | 十進既約分数 | 六進小数 | 十進小数 | 十二進小数 | 二十進小数 |
|---|---|---|---|---|---|---|
| 0.1 | 1/24 | 1/16 | 0.0213 | 0.0625 | 0.09 | 0.15 |
| 0.2 | 1/12 | 1/8 | 0.043 | 0.125 | 0.16 | 0.2A |
| 0.3 | 3/24 | 3/16 | 0.1043 | 0.1875 | 0.23 | 0.3F |
| 0.4 | 1/4 | 1/4 | 0.13 | 0.25 | 0.3 | 0.5 |
| 0.5 | 5/24 | 5/16 | 0.1513 | 0.3125 | 0.39 | 0.65 |
| 0.6 | 3/12 | 3/8 | 0.213 | 0.375 | 0.46 | 0.7A |
| 0.7 | 11/24 | 7/16 | 0.2343 | 0.4375 | 0.53 | 0.8F |
| 0.8 | 1/2 | 1/2 | 0.3 | 0.5 | 0.6 | 0.A |
| 0.9 | 13/24 | 9/16 | 0.3213 | 0.5625 | 0.69 | 0.B5 |
| 0.A | 5/12 | 5/8 | 0.343 | 0.625 | 0.76 | 0.CA |
| 0.B | 15/24 | 11/16 | 0.4043 | 0.6875 | 0.83 | 0.DF |
| 0.C | 3/4 | 3/4 | 0.43 | 0.75 | 0.9 | 0.F |
| 0.D | 21/24 | 13/16 | 0.4513 | 0.8125 | 0.99 | 0.G5 |
| 0.E | 11/12 | 7/8 | 0.513 | 0.875 | 0.A6 | 0.HA |
| 0.F | 23/24 | 15/16 | 0.5343 | 0.9375 | 0.B3 | 0.IF |
| N進法 | Nの 素因数分解 |
1/3 | 1/9 (1÷32) |
(1/27)10 (1÷33) |
100÷3 | 100÷9 | 100÷33 |
|---|---|---|---|---|---|---|---|
| 十六進法 | 24 | 0.5555… | 0.1C7… | 0.097B425ED… (1÷1B) |
55.5555… | 1C.71C… | 9.7B425ED09… (100÷1B) |
| 六進法 | 2×3 | 0.2 | 0.04 (1÷13) |
0.012 (1÷43) |
221.2 (1104÷3) |
44.24 (1104÷13) |
13.252 (1104÷43) |
| 十二進法 | 22×3 | 0.4 | 0.14 | 0.054 (1÷23) |
71.4 (194÷3) |
24.54 (194÷9) |
9.594 (194÷23) |
| N進法 | Nの素因数分解 | 1/5 | (1/25)10 (1÷52) | 100÷5 | 100÷52 |
|---|---|---|---|---|---|
| 十六進法 | 24 | 0.3333… | 0.0A3D7… (1÷19) |
33.3333… | A.3D70A… (100÷19) |
| 十進法 | 2×5 | 0.2 | 0.04 (1÷25) |
51.2 (256÷5) |
10.24 (256÷25) |
| 二十進法 | 22×5 | 0.4 | 0.0G (1÷15) |
2B.4 (CG÷5) |
A.4G (CG÷15) |
一桁同士の計算:
|
Hexadecimalはギリシャ語で6 (ἕξ, hex) を意味するhexa-と、ラテン語で10番目 (tenth) を意味する-decimalの複合語。ウェブスター新国際オンライン版第3版によるとhexadecimalは完全ラテン語由来のsexadecimalの代替語である(Bendixのドキュメントにも同様の記述がある[5])。Merriam-Webster's Collegiate Dictionaryにおけるhexadecimalの初出は1954年で、当初より現在に至るまで国際科学用語ISVに分類されている。ギリシャ語とラテン語を混ぜ合わせた造語法はISVでは一般的にみられる。六十進法を意味するsexagesimalはラテン語の接頭子を保っている。ドナルド・クヌースはラテン語で16進数を表すとするならばsenidenaryか、または恐らくsedenaryが正しいのではないかとしている(同じ作り方で考えればbinary (2進数)、ternary (3進数)、quaternary (4進数)となり、この流れでいえばdecimal (10進数)とoctal (8進数)も、それぞれdenaryとoctonaryが正しいことになる)[10]。アルフレッド・B・テイラーは16進数を不便な数字だとして嫌っていたが、19世紀にsenidenaryとして16進数を研究していた[11][12]。シュワルツマンによると、ラテン語から考えればsexadecimalが自然だが、コンピュータのハッカーたちは略語にsexを使うだろうと話した[13]。語源的に完全ギリシャ語で考えればhexadecadic(ギリシア語: ἑξαδεκαδικός hexadekadikós)が正しいと考えられる(ただし現代のギリシャではdecahexadic(ギリシア語: δεκαεξαδικός dekaexadikos)が使われている)。
単位系の十六進法では、数は十進法を用いて表記し、16に至ると単位を繰り上げる方法を採る。
尺貫法の質量の単位の一部にも十六進法が用いられる。