三进制是以3为底数的进制。和二进制一样,三进制的数位,称为三进制位(trit),每个三进制位包含(约1.58个)二进制位的信息量。通常,三进制中使用0、1、2三个数字。但在平衡三进制中,则使用-1(记作T)、0、1来表达。
表示形式
例如,365(10)在常见的三进制表示法中的写法是111112(3)。
运算规则
三进制的四则运算
加 |
减 |
乘 |
除
|
+ |
0 |
1 |
2
|
0
|
0 |
1 |
2
|
1
|
1 |
2 |
10
|
2
|
2 |
10 |
11
|
|
- |
0 |
1 |
2
|
0
|
0 |
1 |
2
|
1
|
-1 |
0 |
2
|
2
|
-2 |
-1 |
0
|
|
× |
0 |
1 |
2
|
0
|
0 |
0 |
0
|
1
|
0 |
1 |
2
|
2
|
0 |
2 |
11
|
|
÷ |
0 |
1 |
2
|
0
|
NaN |
NaN |
NaN
|
1
|
0 |
1 |
2
|
2
|
0 |
0.1 |
1
|
|
与其他进制的比较
整数的三进制表示法不如二进制那样冗长,但仍然比六进制或十进制要长。例如,十进制365(六进制1405)在二进制中的写法是101101101(9个数字),在三进制中的写法是111112(6个数字)。
1到33
三进制
|
1 |
2 |
10 |
11 |
12 |
20 |
21 |
22 |
100 |
101 |
102 |
110 |
111 |
112 |
120 |
121 |
122 |
200 |
201 |
202 |
210 |
211 |
212 |
220 |
221 |
222 |
1000
|
二进制
|
1 |
10 |
11 |
100 |
101 |
110 |
111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
10000 |
10001 |
10010 |
10011 |
10100 |
10101 |
10110 |
10111 |
11000 |
11001 |
11010 |
11011
|
六进制
|
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 |
35 |
40 |
41 |
42 |
43
|
十进制
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27
|
3的幂
三进制
|
1 |
10 |
100 |
1 000 |
10 000 |
100 000 |
1 000 000 |
10 000 000 |
100 000 000 |
1 000 000 000
|
二进制
|
1 |
11 |
1001 |
1 1011 |
101 0001 |
1111 0011 |
10 1101 1001 |
1000 1000 1011 |
1 1001 1010 0001 |
100 1100 1110 0011
|
六进制
|
1 |
3 |
13 |
43 |
213 |
1043 |
3213 |
14043 |
50213 |
231043
|
十进制
|
1 |
3 |
9 |
27 |
81 |
243 |
729 |
2187 |
6561 |
19683
|
幂
|
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39
|
在三进制中表示三分之一是很方便的,不像在十进制中,需要用无限小数来表示。但是,二分之一、四分之一之类的分数在三进制中都是无穷小数,这是因为2不是3的因子。
小数
|
三进制
|
0.1 |
0.1 |
0.02 |
0.0121 |
0.01 |
0.010212 |
0.01 |
0.01 |
0.0022 |
0.00211 |
0.002 |
0.002
|
二进制
|
0.1 |
0.01 |
0.01 |
0.0011 |
0.001 |
0.001 |
0.001 |
0.000111 |
0.00011 |
0.0001011101 |
0.0001 |
0.000100111011
|
六进制
|
0.3 |
0.2 |
0.13 |
0.1 |
0.1 |
0.05 |
0.043 |
0.04 |
0.03 |
0.0.0313452421 |
0.03 |
0.024340531215
|
十进制
|
0.5 |
0.3 |
0.25 |
0.2 |
0.16 |
0.142857 |
0.125 |
0.1 |
0.1 |
0.09 |
0.083 |
0.076923
|
六进分数
|
1/2 |
1/3 |
1/4 |
1/5 |
1/10 |
1/11 |
1/12 |
1/13 |
1/14 |
1/15 |
1/20 |
1/21
|
十进分数
|
1/2 |
1/3 |
1/4 |
1/5 |
1/6 |
1/7 |
1/8 |
1/9 |
1/10 |
1/11 |
1/12 |
1/13
|
|
三进制
|
0.1 |
0.2 |
0.20 |
0.2101 |
0.21 |
0.212010 |
0.21 |
0.22 |
0.2200 |
0.22011 |
0.220 |
0.220
|
二进制
|
0.1 |
0.10 |
0.11 |
0.1100 |
0.110 |
0.110 |
0.111 |
0.111000 |
0.11100 |
0.1110100010 |
0.1110 |
0.111011000100
|
六进制
|
0.3 |
0.4 |
0.43 |
0.4 |
0.5 |
0.50 |
0.513 |
0.52 |
0.52 |
0.5242103134 |
0.53 |
0.531215024340
|
十进制
|
0.5 |
0.6 |
0.75 |
0.8 |
0.83 |
0.857142 |
0.875 |
0.8 |
0.9 |
0.90 |
0.916 |
0.923076
|
六进分数
|
1/2 |
2/3 |
3/4 |
4/5 |
5/10 |
10/11 |
11/12 |
12/13 |
13/14 |
14/15 |
15/20 |
20/21
|
十进分数
|
1/2 |
2/3 |
3/4 |
4/5 |
5/6 |
6/7 |
7/8 |
8/9 |
9/10 |
10/11 |
11/12 |
12/13
|
|
其他进制到三进制的转换
整数部分一般使用连除法。用3除待转换数或上一步的商,求得余数,直至最后的商为零。将各次余数从后往前排列,即为目标进制下的整数部分。
小数部分一般使用连乘法。用3乘待转换数或上一步的积,求得整数部分,将整数部分从前往后排列,即为目标进制下的小数部分。
正负数需要分别处理。
十进制到普通三进制
例如,2356
2356÷3=785余1 ↑
785÷3=261余2 |
261÷3=87 余0 |
87÷3=29 余0 |
29÷3=9 余2 |
9÷3=3 余0 |
3÷3=1 余0 |
1÷3=0 余1 |
2356的三进制为10020021
例如,1.4
1.4 向下圆整为1|,余0.4♦
0.4×3=1.2 向下圆整为1|,余0.2
0.2×3=0.6 向下圆整为0|,余0.6
0.6×3=1.8 向下圆整为1|,余0.8
0.8×3=2.4 向下圆整为2↓,余0.4 进入循环
1.4的三进制为1.1012
例如,1/5
1/5 向下圆整为0|,余1/5♦
1/5×3= 3/5 向下圆整为0|,余3/5
3/5×3=1 4/5 向下圆整为1|,余4/5
4/5×3=2 2/5 向下圆整为2|,余2/5
2/5×3=1 1/5 向下圆整为1↓,余1/5,进入循环
1/5的三进制为0.0121
也可以用基本公式来计算。
25.410=2*1011+12*1010+11*101-1
=2*101+12+11/101
=202+12+0.1012
=221.1012
三进制计算机
Сетунь
早在上世纪50、60年代,一批莫斯科国立大学的研究员就设计了人类历史上第一批三进制计算机“Сетунь”和“Сетунь 70”(“Сетунь”是莫大附近一条流入莫斯科河的小河的名字)。
“Сетунь”是一台带有快速乘法器的时序计算机。小型的铁氧体随机存储器(容量为3页,即54字)充当缓存,在主磁鼓存储器中交换页面。这台计算机支持24条指令,其中3条为预留指令,目前不用。“Сетунь”总共生产了50台(包括样机)。从加里宁格勒到雅库茨克,从阿什哈巴德到新西伯利亚,全苏都能看到“Сетунь”的身影。各地都对“Сетунь”的反应不错,认为它编程简单(不需要使用汇编语言),适用于工程计算、工业控制、计算机教学等各个领域。
“Сетунь 70”是一台双堆栈计算机。其回叫堆栈用来调用子程序。这一简单的改进启发了荷兰计算机科学家艾兹格·W·迪科斯彻,为他日后提出“结构化程序设计”思想打下了基础。“Сетунь 70”成了莫斯科国立大学三进制计算机的绝唱。由于得不到上级的支持,这个科研项目不得不无限期停顿下来。
TERNAC
TERNAC 是一部三进制计算机,由纽约州立大学在1973年实现。TERNAC提供整数和浮点数,整数的长度是24个三进制位。浮点数采用科学计数法表示,尾数部分长42个三进制位,指数部分长6个三进制位。
Ternac计算机起初是验证在二进制计算机上实施非二进制结构的可行性,并确认在存储容量和时间上花费。作为一个可行性测试,这个尝试是成功的。第一个版本的实现证明,其速度和价格和二进制计算机相似。
參看
参考