三进制
| 记数系统 | |
|---|---|
| 印度-阿拉伯数字系统 | |
| 西方阿拉伯数字 阿拉伯文数字 高棉數字 |
印度數字 波羅米數字 泰语数字 |
| 汉字文化圈記數系統 | |
| 中文数字 越南语数字 算筹 |
日語數字 韓文數字 苏州码子 |
| 字母記數系統 | |
| 阿拉伯字母數字 亞美尼亞數字 西里爾數字 吉茲數字 |
希伯來數字 希腊数字 阿利耶波多數字 |
| 其它記數系統 | |
| 雅典數字 巴比倫數字 埃及數字 伊特拉斯坎數字 |
玛雅数字 罗马数字 |
| 依底数区分的进位制系统 | |
| 十进制 (10) | |
| 1 2 3 4 5 6 7 8 9 12 16 20 60 | |
| 进位制系统列表 | |
曾经被莫斯科大学科研人员用于计算机,目前在光子计算机研究领域也有涉及。
目录 |
[编辑] 表示形式
三进制一般有两种表示形式:
一种是以0,1,2为基本字符的表示形式。例如,365(10)在这种表示形式中的写法是111112(3)。
一种是以-1,0,1为基本字符的表现形式。例如,365在这种表示形式中的写法是1FFFFFF(我们用F表示-1)。这种表示法也被称作对称三进制或平衡三进制
[编辑] 运算规则
[编辑] 四则运算
[编辑] 普通三进制的四则运算
- 加法:0+0=0,0+1=1,0+2=2,1+0=1,1+1=2,1+2=10,2+0=2,2+1=10,2+2=11
- 减法:0-0=0,1-0=1,2-1=1,1-1=0,2-1=1,10-1=2,2-2=0,10-2=1,11-2=2
- 乘法:0×0=0,0×1=0,0×2=2,1×0=0,1×1=1,1×2=2,2×0=0,2×1=2,2×2=11
- 除法:0÷1=0,1÷1=1,2÷1=1,1÷2=0.1111...
[编辑] 对称三进制的四则运算
- 加法:F+F=F1,F+0=F,F+1=0,0+F=F,0+0=0,0+1=1,1+F=0,1+0=1,1+1=1F
- 减法:F-F=0,F-0=F,F-1=F1,0-F=1,0-0=0,0-1=F,1-F=1F,1-0=1,1-1=0
- 乘法:F×F=1,F×0=0,F×1=F,0×F=0,0×0=0,0×1=0,1×F=F,1×0=0,1×1=1
- 除法:F÷F=1,F÷1=F,0÷F=0,0÷1=0, 1÷F=F,1÷1=1
[编辑] 对称三进制的逻辑运算
- 或:F∨F=F,F∨0=0,F∨1=1,0∨F=0,0∨0=0,0∨1=1,1∨F=1,1∨0=1,1∨1=1,
- 与:F∧F=F,F∧0=F,F∧1=F,0∧F=F,0∧0=0,0∧1=0,1∧F=F,1∧0=0,1∧1=1
- 非:¬F=1,¬0=0,¬1=F
[编辑] 与十进制和二进制的比较
整数的三进制表示法不如二进制那样冗长,但仍然比十进制要长。例如,365在二进制中的写法是101101101(9个数字),在三进制中的写法是111112(6个数字)。
| 三进制 | 1 | 2 | 10 | 11 | 12 | 20 | 21 | 22 | 100 |
|---|---|---|---|---|---|---|---|---|---|
| 对称三进制 | 1 | 1F | 10 | 11 | 1FF | 1F0 | 1F1 | 10F | 100 |
| 二进制 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 |
| 十进制 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 三进制 | 101 | 102 | 110 | 111 | 112 | 120 | 121 | 122 | 200 |
| 对称三进制 | 101 | 11F | 110 | 111 | 1FFF | 1FF0 | 1FF1 | 1F0F | 1F00 |
| 二进制 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 | 10001 | 10010 |
| 十进制 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 三进制 | 201 | 202 | 210 | 211 | 212 | 220 | 221 | 222 | 1000 |
| 对称三进制 | 1F01 | 1F1F | 1F10 | 1F11 | 10FF | 10F0 | 10F1 | 100F | 1000 |
| 二进制 | 10011 | 10100 | 10101 | 10110 | 10111 | 11000 | 11001 | 11010 | 11011 |
| 十进制 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 三进制 | 1 | 10 | 100 | 1 000 | 10 000 |
|---|---|---|---|---|---|
| 对称三进制 | 1 | 10 | 100 | 1 000 | 10 000 |
| 二进制 | 1 | 11 | 1001 | 1 1011 | 101 0001 |
| 十进制 | 1 | 3 | 9 | 27 | 81 |
| 幂 | 30 | 31 | 32 | 33 | 34 |
| 三进制 | 100 000 | 1 000 000 | 10 000 000 | 100 000 000 | 1 000 000 000 |
| 对称三进制 | 100 000 | 1 000 000 | 10 000 000 | 100 000 000 | 1 000 000 000 |
| 二进制 | 1111 0011 | 10 1101 1001 | 1000 1000 1011 | 1 1001 1010 0001 | 100 1100 1110 0011 |
| 十进制 | 243 | 729 | 2 187 | 6 561 | 19 683 |
| 幂 | 35 | 36 | 37 | 38 | 39 |
在三进制中表示三分之一是很方便的,不像在十进制中,需要用无限小数来表示。但是,二分之一、四分之一之类的分数在三进制中都是无穷小数,这是因为2不是3的因子。
| 三进制 | 0.111111111111... | 0.1 | 0.020202020202... | 0.012101210121... | 0.011111111111... | 0.010212010212... |
|---|---|---|---|---|---|---|
| 对称三进制 | 0.111111111111... | 0.1 | 0.1F1F1F1F1F... | 0.1FF11FF11FF1... | 0.011111111111... | 0.0110FF0110FF... |
| 二进制 | 0.1 | 0.010101010101... | 0.01 | 0.001100110011... | 0.00101010101... | 0.001001001001... |
| 十进制 | 0.5 | 0.333333333333... | 0.25 | 0.2 | 0.166666666666... | 0.142857142857... |
| 分数 | 1/2 | 1/3 | 1/4 | 1/5 | 1/6 | 1/7 |
| 三进制 | 0.010101010101... | 0.01 | 0.002200220022... | 0.002110021100... | 0.002020202020... | 0.002002002002... |
| 对称三进制 | 0.010101010101... | 0.01 | 0.010F010F010F... | 0.01F1101F1100... | 0.01F1F1F1F0... | 0.01F01F01F01F... |
| 二进制 | 0.001 | 0.000111000111... | 0.000110011001... | 0.000101110100... | 0.000101010101... | 0.000100111011... |
| 十进制 | 0.125 | 0.111111111111... | 0.1 | 0.090909090909... | 0.083333333333... | 0.076923076923... |
| 分数 | 1/8 | 1/9 | 1/10 | 1/11 | 1/12 | 1/13 |
[编辑] 对称三进制和三进制的比较
1.对称三进制采用-1,0,1作为基本字符,而普通三进制采用0,1,2作为基本字符。
2.对称三进制不需要符号位就能表示负数,而普通三进制需要符号位才能表示负数。
3.对称三进制乘法比较简单,移位、取非、相加就可以完成,便于处理;普通三进制,处理起来比较麻烦。
4.对称三进制在表示自然数的时候,比普通三进制要长
5.对称三进制在表示0.510~110之间的数的时候,整数部分为1,不直观;普通三进制没有这种现象
[编辑] 其他进制到三进制的转换
整数部分,一般使用长除法, 用基数除待转换数或上一步的商,求得余数或补数,直至最后的商为零.将各次余数从后往前排列,即为目标进制下的整数部分. 小数部分,一般使用长乘法,用基数乘待转换数或上一步的积,求得整数部分,将整数部分从前往后排列,即为目标进制下的小数部分 正负数需要分别处理.
[编辑] 十进制到普通三进制
例如,2356
2356/3=785余1,785/3=261余2,261/3=87,87/3=29,29/3=9余2,9/3=3,3/3=1,1/3=0余1
以上得知,2356的三进制为10020021
[编辑] 十进制到对称三进制
例如,2356,
2356/3=785余1;785/3=262少1,262/3=87余1,87/3=29,29/3=10少1,10/3=3余1,3/3=1,1/3=0余1
以上得知,2356的对称三进制为101F01F1
[编辑] 二进制到对称三进制
[编辑] 正数
比如0111 1010(十进制122)
01111010/11=101001少1;101001/11=1110少1;1110/11=101少1;101/11=10少1;10/11=1少1;1/11=0余1
01111010的对称3进制为1FFFFF
[编辑] 负数
比如1011 1010(-70)
取原码-1000110
1000110/11=10111余1;10111/11=1000少1;1000/11=11少1;11/11=1;1/11=0余1
得10FF1,逐位取非,得对称三进制为F011F
[编辑] 三进制计算机
早在上世纪50、60年代,一批莫斯科国立大学的研究员就设计了人类历史上第一批三进制计算机“Сетунь”和“Сетунь 70”(“Сетунь”是莫大附近一条流入莫斯科河的小河的名字)。
“Сетунь”是一台带有快速乘法器的时序计算机。小型的铁氧体随机存储器(容量为3页,即54字)充当缓存,在主磁鼓存储器中交换页面。这台计算机支持24条指令,其中3条为预留指令,目前不用。“Сетунь”总共生产了50台(包括样机)。从加里宁格勒到雅库茨克,从阿什哈巴德到新西伯利亚,全苏都能看到“Сетунь”的身影。各地都对“Сетунь”的反应不错,认为它编程简单(不需要使用汇编语言),适用于工程计算、工业控制、计算机教学等各个领域。
“Сетунь 70”是一台双堆栈计算机。其回叫堆栈用来调用子程序。这一简单的改进启发了荷兰计算机科学家艾兹格•W•迪科斯彻,为他日后提出“结构化程序设计”思想打下了基础。“Сетунь 70”成了莫斯科国立大学三进制计算机的绝唱。由于得不到上级的支持,这个科研项目不得不无限期停顿下来。
[编辑] 外部链接
|
||||||||||||||