二五進法

2と5を底とし、底およびその冪を基準にして十進数一桁を表す方法

二・五進法にごしんほう: bi-quinary coded decimal)は、25ていとし、底およびそのを基準にして十進法の一桁を表す方法である。

数列 編集

二・五進法は、桁上がりが通常のN進法とは異なり、桁上がりがの二段階になる。

以下に、二・五進法と、五が絡むN進法である六進法(5+1 = 10)と十進法(5+5 = 10)との数列の差異を表記する。

零から二十まで
二・五進法 六進法 十進法
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
10 5 5
11 10 6
12 11 7
13 12 8
14 13 9
1:00 14 10
1:01 15 11
1:02 20 12
1:03 21 13
1:04 22 14
1:10 23 15
1:11 24 16
1:12 25 17
1:13 30 18
1:14 31 19
2:00 32 20
二十一から四十まで
二・五進法 六進法 十進法
2:01 33 21
2:02 34 22
2:03 35 23
2:04 40 24
2:10 41 25
2:11 42 26
2:12 43 27
2:13 44 28
2:14 45 29
3:00 50 30
3:01 51 31
3:02 52 32
3:03 53 33
3:04 54 34
3:10 55 35
3:11 100 36
3:12 101 37
3:13 102 38
3:14 103 39
4:00 104 40
五十前後と百前後
二・五進法 六進法 十進法
4:10 113 45
4:11 114 46
4:12 115 47
4:13 120 48
4:14 121 49
10:00 122 50
10:01 123 51
10:02 124 52
10:03 125 53
10:04 130 54
14:11 240 96
14:12 241 97
14:13 242 98
14:14 243 99
1:00:00 244 100
1:00:01 245 101
1:00:02 250 102
二百十六前後
二・五進法 六進法 十進法
2:00:14 545 209
2:01:00 550 210
2:01:01 551 211
2:01:02 552 212
2:01:03 553 213
2:01:04 554 214
2:01:10 555 215
2:01:11 1000 216
2:01:12 1001 217
2:01:13 1002 218
2:01:14 1003 219
2:02:00 1004 220
五百前後
二・五進法 六進法 十進法
4:14:04 2142 494
4:14:10 2143 495
4:14:11 2144 496
4:14:12 2145 497
4:14:13 2150 498
4:14:14 2151 499
10:00:00 2152 500
10:00:01 2153 501
10:00:02 2154 502
10:00:03 2155 503
10:00:04 2200 504
10:00:10 2201 505
65前後
二・五進法 六進法 十進法
12:12:11:14 55545 7769
12:12:12:00 55550 7770
12:12:12:01 55551 7771
12:12:12:02 55552 7772
12:12:12:03 55553 7773
12:12:12:04 55554 7774
12:12:12:10 55555 7775
12:12:12:11 100000 7776
12:12:12:12 100001 7777
12:12:12:13 100002 7778
12:12:12:14 100003 7779
12:12:13:00 100004 7780

表記例として、実際のローマ数字(二・五進法)と、ローマ数字を六進法と十進法に当て嵌めた場合の差異を表記する。減算則は適用しない。

  • 1:12:12(二・五進法) = 453(六進法) = 177(十進法)
    • 二・五進法:CLXXVII
    • 六進法:XXXXVVVVVIII (62 = X、6 = V)
    • 十進法:CXXXXXXXIIIIIII (A2 = C、A = X となり、50(10)はXが5個、5もIが5個のまま)
  • 1:14:03:11(二・五進法) = 12544(六進法) = 1936(十進法)
    • 二・五進法:MCMXXXVI
    • 六進法:MCCXXXXXVVVVIIII (64 = M、63 = C)
    • 十進法:MCCCCCCCCCXXXIIIIII (A3 = M となり、500(10)はCが5個のまま)

コンピュータ 編集

初期のコンピュータにおいて、ディジタル回路で直接十進法で数を扱う方法の一つとして使われた。基本となる考え方としてはそろばんと同じである。

具体的な実装方法は多岐にわたるが、ここでは一例として最上位ビットを5、そして最下位ビットに向って4、2、1という重みを与えた4ビットで0から9までのビット列を、二進数と比較しながら示す。

十進数 二・五進法 二進数
0 0 000 0000
1 0 001 0001
2 0 010 0010
3 0 011 0011
4 0 100 0100
5 1 000 0101
6 1 001 0110
7 1 010 0111
8 1 011 1000
9 1 100 1001

2桁以上については、通常の十進表現と同様に、これを複数桁並べ十の冪の重みを与える。

別のやり方として、リレー式計算機 FACOM 128 では次のような7ビットによる表現が実際に用いられた[1][2]。下位5ビットは十進法の0から4に一対一で対応し、上位2ビットで5の重みを表現する。冗長な符号構成だが、2倍・5倍・10倍が簡単に求められるので3増し符号よりも高速に乗算できた。また、2/7 の定比率符号(常に7ビットのうち2ビットが1、他は0)なので誤り検出ができ、計算機の信頼性向上に繋がった[3]

十進数 二・五進法 二進数
0 01 00001 0000
1 01 00010 0001
2 01 00100 0010
3 01 01000 0011
4 01 10000 0100
5 10 00001 0101
6 10 00010 0110
7 10 00100 0111
8 10 01000 1000
9 10 10000 1001

ここで示した方法はあくまで一例であり、特に下位3ビットで0~4を表す方法は他にもいろいろありうる。

パック十進数との変換 編集

  • 4bit長の二進数(ニブル)に対し、5以上であれば3を足す処理は、パック10進数を二五進数に変換する処理に等しい。
  • 4bit長の二五進数が連続してレイアウトされたレジスタを考える。このレジスタを左シフトして得られるビットパターンは、二五進数による元の値を二倍してパック10進数で表したものと等しい。

0001_0100_0011_1010 (二五進数で1437)

(左シフト)

0010_1000_0111_0100 (パック10進数で2874)

  • 上記の操作の反復により二進数を十進数へと高速に変換するアルゴリズムは、「Double_dabble英語版」と呼ばれており、除算を伴わない高速な基数変換アルゴリズムとして知られている。

その他 編集

アバカス、特に日本の近代以降の四つ珠のそろばんは一種の二・五進法である。日本最初の、また独自に開発された手回し式計算機である矢頭良一自働算盤は、他の同様の計算機は多くが「出入り歯車式」であるが、矢頭のものは独特の横移動式で、その操作の際に5個の歯をまとめて操作できるようにすることで利用の便を図った、ある種の二・五進法的な入力操作方式であった[4](そろばんを参考にしたものとも思われている。なお、これは入力についてだけで、機械的には全くの十進方式であり、同機の計算機械としての仕組みにはそろばんは全く無関係である)。

貨幣制度では、発行される硬貨・紙幣の額面は、二・五進法が主流である。例えば日本円では、あまり流通していない二千円紙幣を別にすれば、硬貨と紙幣は「1」と「5」のつく単位なので、

となっている(海外ではアメリカの25セント硬貨など1系・5系でない硬貨・紙幣が広く一般的に流通している例もある)。

編集

  1. ^ 松原宏、山口詔規「リレー式自動計算機について」『計測』第7巻第5号、日本計測学会、1957年5月、235-244頁、doi:10.11499/sicejl1951.7.235 
  2. ^ 池田敏雄「リレー式電気計算機についてI」『科学』第25巻第6号、岩波書店、1955年6月、263-278頁、doi:10.11501/3217892 
  3. ^ リレーによる演算回路は、リレーの接触不良により誤った解を出力することが多かったので、符号の冗長性を利用した自己検査機能を持たせ、誤った解が出力されることを防いだ。
  4. ^ 山田昭彦. “矢頭良一の機械式卓上計算機「自働算盤」に関する調査報告” (PDF). 産業技術史資料情報センター. 2013年12月3日時点のオリジナルよりアーカイブ。2013年12月11日閲覧。

関連項目 編集