三进制

维基百科,自由的百科全书
跳转至: 导航搜索
记数系统
印度-阿拉伯数字系统
西方阿拉伯数字
阿拉伯文数字
高棉數字
印度數字
波羅米數字
泰语数字
汉字文化圈記數系統
中文数字
越南语数字
算筹
日語數字
朝鲜文数字
苏州码子
字母記數系統
阿拉伯字母數字
亞美尼亞數字
西里爾數字
吉茲數字
希伯來數字
希腊数字
阿利耶波多數字
其它記數系統
雅典數字
巴比倫數字
埃及數字
伊特拉斯坎數字
玛雅数字
罗马数字
底数区分的进位制系统
1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 26 60 64

三进制是以3基数进制。和二进制一样,三进制的数位,称为三进制位(trit),每个三进制位包含\log_2 3(约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 1 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在二进制中的写法是101101101(9个数字),在三进制中的写法是111112(6个数字)。

1到27
三进制 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 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 9 27 81 243 729 2 187 6 561 19 683
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.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/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.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/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计算机起初是验证在二进制计算机上实施非二进制结构的可行性,并确认在存储容量和时间上花费。作为一个可行性测试,这个尝试是成功的。第一个版本的实现证明,其速度和价格和二进制计算机相似。

外部链接[编辑]