16進数
別名:16進法,十六進数,十六進法
【英】hexadecimal number, hexadecimal, hex
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個のアルファベットは、小文字で表記してもよい。
十六進法
(16進数 から転送)
出典: フリー百科事典『ウィキペディア(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] |
- 1968年にBoby Lapointeが新たな表記Bibi-binaryを定義した。この表記は普及しなかった。
- ブルックヘブン国立研究所のBruce Alan Martinは A〜F による表記に不快感を示し、ビット配列に基づいた全く新しい数字を考案して1968年にCACMへ提案したが、賛同者は少なかった[3]。
- 7セグメントディスプレイでは、B,Dを8,0と区別するためb,dと小文字で表示する方法が採られた。
Bioctal 表記法
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 |
二進表記から十六進表記への変換
二進表記から十六進表記に変換する方法を、以下に示す。
整数部分
- 二進表記を右から順に4桁ずつ区切る。最後(最左部分)が4桁未満のときは、空いた部分(左側)には全て0があるとみなす。
- (111010)2 → (11, 1010)2 → (0011, 1010)2
- 各部分を十六進表記に変換する。
- (0011)2 = (3)16, (1010)2 = (A)16
- 得られた十六進表記を並べて (3A)16 が得られる。
この方法は桁数に関わらず通用する。例えば、(100110010111010)2 は (0100, 1100, 1011, 1010)2 であるから、(4CBA)16 となる。
小数部分
小数部分の変換方法は、次のとおり。
- 二進表記を小数点を基準にして左から順に4桁ずつ区切る。最後(最右部分)が4桁未満のときは、空いた部分(右側)には全て0があるとみなす。
- (0.110101)2 → (0., 1101, 0100)2
- 各部分を十六進表記に変換する。
- (1101)2 = (D)16, (0100)2 = (4)16
- 得られた十六進表記を並べて (0.D4)16 が得られる。
したがって、(111010.110101)2 = (3A.D4)16 である。この方法は桁数に関わらず通用する。
十進数から十六進数への変換
正の整数
正の整数 m を十進法から十六進法に変換するのは次のようにする。
- m を x に代入する。
- x を 16 で割って、余りを求める。
- x/16 の商を x に代入する。
- 16. に戻る。x = 0 であれば終了。
余りを求めた順の逆に並べると、それが十六進法に変換された結果になる。
例: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 である。
倍数の法則
- 末尾が0、2、4、6、8、A、C、Eは偶数。
- 末尾が0、4、8、Cは複偶数(4の倍数)。
- 末尾が0、8は8の倍数。
- 末尾が0は1610の倍数。
- 下2桁が00は25610の倍数。
- 3の倍数は十進法と同じく数字和が3の倍数。
- 5の倍数は六進法と同じく数字和が5の倍数。
- 1510の倍数は数字和が15の倍数。
- 4810の倍数は末尾0で数字和が3の倍数。
- 8010の倍数は末尾0で数字和が5の倍数。
- 24010の倍数は末尾0で数字和が15の倍数。
- 76810の倍数は下2桁00で数字和が3の倍数。
- 128010の倍数は下2桁00で数字和が5の倍数。
- 384010の倍数は下2桁00で数字和が15の倍数。
小数と除算
割り切れない小数の循環部は下線で示す。「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) |
- その他の計算例
- 被除数がB(十進法の11)
- 十六進法:B ÷ 3 = 3.AAAA…
- 十六進法:B ÷ 5 = 2.3333…
- 六進法:(15)6 ÷ 3 = 3.4
- 十二進法:B ÷ 3 = 3.8
- 十進法:(11)10 ÷ 5 = 2.2
- 二十進法:B ÷ 5 = 2.4
- 被除数が8E(十進法の142)
- 十六進法:(8E)16 ÷ 3 = 2F.5555…
- 十六進法:(8E)16 ÷ 5 = 1C.6666…
- 六進法:(354)6 ÷ 3 = 115.2
- 十二進法:(BA)12 ÷ 3 = 3B.4
- 十進法:(142)10 ÷ 5 = 28.4
- 二十進法:(72)20 ÷ 5 = 18.8
四則演算表
一桁同士の計算:
|
英単語 Hexadecimal の語源
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に至ると単位を繰り上げる方法を採る。
尺貫法の質量の単位の一部にも十六進法が用いられる。
ギャラリー
脚注
- ^ 青木和彦・上野健爾他『岩波数学入門辞典』岩波書店、2005年、ISBN 4-00-080209-7、pp.46、125-126 において、底をN=16とした場合。
- ^ (00)16〜(ff)16
- ^ a b Martin, Bruce Alan (October 1968). “編集者への手紙: バイナリ表記について”. Communications of the ACM (Associated Universities Inc.) 11 (10): 658. doi:10.1145/364096.364107.
- ^ a b c d e f g h “Computer Arithmetic”. quadibloc (2018年). 2018年7月16日時点のオリジナルよりアーカイブ。2018年7月16日閲覧。
- ^ a b “2.1.3 Sexadecimal notation”. G15Dプログラマーズリファレンスマニュアル. Los Angeles, CA, USA: Bendix Computer, Division of Bendix Aviation Corporation. p. 4. オリジナルの2017-06-01時点におけるアーカイブ。 2017年6月1日閲覧. "16個の数字 (0〜15) で4ビットのグループを表すことができるためこの基数を用いる。各組合せにシンボルを割り当てることでこの表記をsexadecimalと呼べるようになる(略称をsexと呼ぶことは憚れるため、通常はhexと略す)。sexadecimalのシンボルは10個の10進数に加え、G-15においては、文字 u v w x y z である。この記号は任意であり、別のコンピュータでは最後の6文字に異なるアルファベットを割り当ててもよい。"
- ^ “ILLIAC Programming - A Guide to the Preparation of Problems For Solution by the University of Illinois Digital Computer”. bitsavers.org. Urbana, Illinois, USA: Digital Computer Laboratory, Graduate College, University of Illinois. pp. 3-2 (1956年9月1日). 2017年5月31日時点のオリジナルよりアーカイブ。2014年12月18日閲覧。
- ^ ROYAL PRECISION Electronic Computer LGP - 30 PROGRAMMING MANUAL. Port Chester, New York: Royal McBee Corporation. (April 1957). オリジナルの2017-05-31時点におけるアーカイブ。 2017年5月31日閲覧。(注:この奇妙な配列はLGP-30における6ビットキャラクターコードの順番から来ている。)
- ^ NEC Parametron Digital Computer Type NEAC-1103. Tokyo, Japan: Nippon Electric Company Ltd.. (1960). Cat. No. 3405-C. オリジナルの2017-05-31時点におけるアーカイブ。 2017年5月31日閲覧。
- ^ スペース記号
- ^ Knuth, Donald. (1969). The Art of Computer Programming, Volume 2. ISBN 0-201-03802-1. (Chapter 17.)
- ^ Alfred B. Taylor, Report on Weights and Measures, Pharmaceutical Association, 8th Annual Session, Boston, 15 September 1859. See pages and 33 and 41.
- ^ Alfred B. Taylor, "Octonary numeration and its application to a system of weights and measures", Proc Amer. Phil. Soc. Vol XXIV, Philadelphia, 1887; pages 296-366. See pages 317 and 322.
- ^ Schwartzman, S. (1994). The Words of Mathematics: an etymological dictionary of mathematical terms used in English. ISBN 0-88385-511-9.
関連項目
「16進数」の例文・使い方・用例・文例
16進数と同じ種類の言葉
- 16進数のページへのリンク