三十六進法

ウィキペディアから無料の百科事典

三十六進法(さんじゅうろくしんほう)とは、36を底(てい)とし、底およびそのを基準にして数を表す方法である。底である 36 は Microsoft Excel の BASE 関数や、Python の拡張モジュール・NumPy の base_repr 関数の基数パラメータに指定できる最大値である[1][2]

記数法[編集]

三十六進記数法とは、36 を底とする位取り記数法である。慣用に従い、通常のアラビア数字十進数とし、三十六進記数法の表記は括弧および下付の 36 で表す。三十六進記数法で表された数を三十六進数と呼ぶ。

一般には、0, 1, …, 8, 9(アラビア数字、10種類)および、A - Z(ISO基本ラテンアルファベット[3]、26種類)の合計36種類の文字で数値を表わす。 A - Z は、それぞれ十進法での 10 - 35 を表す。下表の値は Microsoft Excel の BASE 関数の実行結果に準拠する。

0 0 9 9 18 I 27 R
1 1 10 A 19 J 28 S
2 2 11 B 20 K 29 T
3 3 12 C 21 L 30 U
4 4 13 D 22 M 31 V
5 5 14 E 23 N 32 W
6 6 15 F 24 O 33 X
7 7 16 G 25 P 34 Y
8 8 17 H 26 Q 35 Z

右端あるいは小数点で、一の桁を表す。数字の意味する数は、左に一桁ずれると三十六倍になり、右に一桁ずれると三十六分の一になる。(24)36 という表記において、左の「2」は 七十二 を表し、右の「4」は 四 を表し、合わせて 七十六 を表す。

同様に、(M0)36 は 22×361 + 0×360 = 七百九十二 を表し、(B7)36 = 11×361 + 7×360 = 四百三 を表す。

アルファベットI と数字の 1 、およびアルファベットの O と数字の 0 は混同しやすいため、筆記の場合は、斜線付きゼロを使うなど工夫が必要である。また、印字の場合でも、区別が付きにくいフォントの使用を避ける必要がある。

1296で10036となる。

六進表記から三十六進表記への変換[編集]

三十六進法は、単に「数字とアルファベットをすべて使った[4]表記法」という以外に、以下の表のとおり、六進法による表記の二桁を一桁で表現できるという特長を有する。

三十六進表記 六進表記 十進表記
(0)36 (0)6 (0)10
(1)36 (1)6 (1)10
(2)36 (2)6 (2)10
(3)36 (3)6 (3)10
(4)36 (4)6 (4)10
(5)36 (5)6 (5)10
(6)36 (10)6 (6)10
(7)36 (11)6 (7)10
(8)36 (12)6 (8)10
(9)36 (13)6 (9)10
(A)36 (14)6 (10)10
(B)36 (15)6 (11)10
(C)36 (20)6 (12)10
(D)36 (21)6 (13)10
(E)36 (22)6 (14)10
(F)36 (23)6 (15)10
(G)36 (24)6 (16)10
(H)36 (25)6 (17)10
(I)36 (30)6 (18)10
(J)36 (31)6 (19)10
(K)36 (32)6 (20)10
(L)36 (33)6 (21)10
(M)36 (34)6 (22)10
(N)36 (35)6 (23)10
(O)36 (40)6 (24)10
(P)36 (41)6 (25)10
(Q)36 (42)6 (26)10
(R)36 (43)6 (27)10
(S)36 (44)6 (28)10
(T)36 (45)6 (29)10
(U)36 (50)6 (30)10
(V)36 (51)6 (31)10
(W)36 (52)6 (32)10
(X)36 (53)6 (33)10
(Y)36 (54)6 (34)10
(Z)36 (55)6 (35)10

六進表記から三十六進表記に変換する方法を、以下に示す。

整数部分[編集]

  1. 六進表記を右から順に二桁ずつ区切る。最後(最左部分)が二桁未満のときは、空いた部分(左側)には全て0があるとみなす。
    • (34152)6 → (3, 41, 52)6 → (03, 41, 52)6
  2. 各部分を三十六進表記に変換する。
    • (03)6 = (3)36 , (41)6 = (P)36 , (52)6 = (W)36
  3. 得られた三十六進表記を並べて (3PW)36 が得られる。

この方法は桁数に拘らず通用する。例えば、(502145010321413)6 は (05, 02, 14, 50, 10, 32, 14, 13)6 であるから、(52AU6KA9)36 となる。

小数部分[編集]

小数部分の変換方法は、次のとおり。

  1. 六進表記を小数点を基準にして左から順に二桁ずつ区切る。最後(最右部分)が二桁未満のときは、空いた部分(右側)には全て0があるとみなす。
    • (0.1203512)6 → (0., 12, 03, 51, 2)6 → (0., 12, 03, 51, 20)6
  2. 各部分を三十六進表記に変換する。
    • (12)6 = (8)36 , (03)6 = (3)36 , (51)6 = (V)36 , (20)6 = (C)36
  3. 得られた三十六進表記を並べて (0.83VC)36 が得られる。

したがって、(34152.1203512)6 = (3PW.83VC)36 である。この方法は桁数に関わらず通用する。

関連項目[編集]

脚注[編集]

  1. ^ BASE関数”. マイクロソフト. 2021年4月11日閲覧。
  2. ^ numpy.base_repr”. NumPy Developers.. 2021年4月11日閲覧。
  3. ^ いわゆる「アルファベット
  4. ^ アルファベットの大文字小文字は区別しないものとする。

外部リンク[編集]