三進位
三进制是以3为底数的进制。和二进制一样,三进制的数位,称为三进制位(trit),每个三进制位包含(约1.58个)二进制位的信息量。通常,三进制中使用0、1、2三个数字。但在平衡三进制中,则使用-1(记作T)、0、1来表达。
记数系统 | |
---|---|
印度-阿拉伯数字系统 | |
西方阿拉伯数字 阿拉伯文数字 高棉數字 孟加拉数字 |
印度數字 波羅米數字 泰语数字 |
漢字文化圈記數系統 | |
中文数字 閩南語數字 越南语数字 算筹 |
日語數字 數字 苏州码子 |
字母記數系統 | |
阿拉伯字母數字 亚美尼亚数字 西里爾數字 吉茲數字 |
希伯來數字 希腊数字 阿利耶波多數字 |
其它記數系統 | |
阿提卡數字 巴比倫數字 古埃及数字 伊特拉斯坎數字 |
玛雅数字 罗马数字 熙笃会数字 卡克托维克数字 |
依底数区分的进位制系统 | |
1 2 3 4 5 6 8 9 10 11 12 16 20 36 60 | |
运算规则
三进制的四则运算
加 | 减 | 乘 | 除 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
与其他进制的比较
整数的三进制表示法不如二进制那样冗长,但仍然比六进制或十进制要长。例如,十进制365(六进制1405)在二进制中的写法是101101101(9个数字),在三进制中的写法是111112(6个数字)。
三进制 | 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 |
三进制 | 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的因子。
小数 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
其他进制到三进制的转换
整数部分一般使用连除法。用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年代,一批莫斯科国立大学的研究员就设计了人类历史上第一批三进制计算机“”和“”(“”是莫大附近一条流入莫斯科河的小河的名字)。
“”是一台带有快速乘法器的时序计算机。小型的铁氧体随机存储器(容量为3页,即54字)充当缓存,在主磁鼓存储器中交换页面。这台计算机支持24条指令,其中3条为预留指令,目前不用。“”总共生产了50台(包括样机)。从加里宁格勒到雅库茨克,从阿什哈巴德到新西伯利亚,全苏都能看到“”的身影。各地都对“”的反应不错,认为它编程简单(不需要使用汇编语言),适用于工程计算、工业控制、计算机教学等各个领域。
“”是一台双堆栈计算机。其回叫堆栈用来调用子程序。这一简单的改进启发了荷兰计算机科学家艾兹格·W·迪科斯彻,为他日后提出“结构化程序设计”思想打下了基础。“”成了莫斯科国立大学三进制计算机的绝唱。由于得不到上级的支持,这个科研项目不得不无限期停顿下来。
TERNAC
TERNAC 是一部三进制计算机,由纽约州立大学在1973年实现。TERNAC提供整数和浮点数,整数的长度是24个三进制位。浮点数采用科学计数法表示,尾数部分长42个三进制位,指数部分长6个三进制位。 Ternac计算机起初是验证在二进制计算机上实施非二进制结构的可行性,并确认在存储容量和时间上花费。作为一个可行性测试,这个尝试是成功的。第一个版本的实现证明,其速度和价格和二进制计算机相似。