三进制

三进制是以3底数进制。和二进制一样,三进制的数位,称为三进制位(trit),每个三进制位包含(约1.58个)二进制位的信息量。通常,三进制中使用0、1、2三个数字。但在平衡三进制中,则使用-1(记作T)、0、1来表达。

记数系统
印度-阿拉伯数字系统
西方阿拉伯数字
阿拉伯文数字
高棉数字
孟加拉数字
印度数字
波罗米数字
泰语数字
汉字文化圈记数系统
中文数字
闽南语数字
越南语数字
算筹
日语数字
朝鲜语数字
苏州码子
字母记数系统
阿拉伯字参数字
亚美尼亚数字
西里尔数字
吉兹数字
希伯来数字
希腊数字
阿利耶波多数字
其它记数系统
雅典数字
巴比伦数字
古埃及数字
伊特拉斯坎数字
玛雅数字
罗马数字
熙笃会数字
因努伊特数字
底数区分的进位制系统
1 2 3 4 5 6 8 9 10 11 12 15 16 18 20 24 30 32 36 60 64

表示形式

例如,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计算机起初是验证在二进制计算机上实施非二进制结构的可行性,并确认在存储容量和时间上花费。作为一个可行性测试,这个尝试是成功的。第一个版本的实现证明,其速度和价格和二进制计算机相似。

参考