词条 | 三进制 |
释义 | 三进制是“逢三进一,退一还三”的进制。 三进制数码包括“0,1和2。”电信号(—1)、0、1。 三进制数位小数点前从右往左依次是1位,3位,9位,27位,81位,243位…… 三进制数位小数点后从左往右依次是3分位,9分位,27分位,81分位…… 写时注意应打括号,加下标的3,如(1201)3。读作一二零一,不能读成一千二百零一,这是因为它们对应于27位,9位,3位和1位,不是千百十个位! 一些常见的十进制数换三进制表 十进制 三进制 0 0 1 1 2 2 3 10 4 11 5 12 6 20 7 21 8 22 9 100 10 101 ... ... 三进制在实际生活中较少用到,下面举一例: 三进制数是以下问题的答案: 允许在天平两端放置砝码,问N个砝码如何才能称出最多的整克物体? 答案:1.一个砝码取1克,只能称1克。 2.二个砝码取1克,3克 右盘3,左盘1。称2克 右盘3。称3克 右盘1,3。称4克 3.三个砝码取1克,3克,9克 右盘9,左盘1,3。称5克 右盘9,左盘3。称6克 右盘9,1,左盘3。称7克 右盘9,左盘1。称8克 右盘9。称9克 右盘9,1。称10克 右盘9,3,左盘1。称11克 右盘9,3。称12克 右盘9,3,1。称13克 4.四个砝码取1克,3克,9克,27克。 ............ 其中的1,3,9,27,81等都是三进制数的数位。 定义三进制是以3为底数的进位制。 曾经被莫斯科大学科研人员用于计算机,目前在光子计算机研究领域也有涉及。 对称三进制能比二进制更方便的表示所有整数。 表示形式三进制一般有两种表示形式: 一种是以0,1,2为基本字符的表示形式。例如,365在这种表示形式中的写法是111112。 一种是以-1,0,1为基本字符的表现形式。例如,365在这种表示形式中的写法是1FFFFFF(我们用F表示-1)。这种表示法也被称作对称三进制或平衡三进制 运算规则四则运算 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=0,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=2,1÷2=0.1111... 2 对称三进制的四则运算 加法: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=1, 1÷F=F,1÷1=1 3 对称三进制的逻辑运算 或: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到27 三进制 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 3的幂 三进制 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 幂 3(0) 3(1) 3(2) 3(3) 3(4)
三进制 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 幂 3(5) 3(6) 3(7) 3(8) 3(9)在三进制中表示三分之一是很方便的,不像在十进制中,需要用无限小数来表示。但是,二分之一、四分之一之类的分数在三进制中都是无限小数,这是因为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.5〈10〉~1〈10〉之间的数的时候,整数部分为1,不直观;普通三进制没有这种现象。 其他进制到三进制的转换整数部分,一般使用长除法,用基数除待转换数或上一步的商,求得余数或补数,直至最后的商为零。将各次余数从后往前排列,即为目标进制下的整数部分。小数部分,一般使用长乘法,用基数乘待转换数或上一步的积,求得整数部分,将证书部分从前往后排列,即为目标进制下的小数部分正负数需要分别处理。 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 2 十进制到对称三进制 例如,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 3 二进制到对称三进制 3.1 正数 比如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 3.2 负数 比如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 对称三进制计算机现今的计算机都使用“二进制”数字系统,尽管它的计算规则非常简单,但其实“二进制”逻辑并不能完美地表达人类的真实想法。相比之下,“三进制”逻辑更接近人类大脑的思维方式。因为在一般情况下,我们对问题的看法不是只有“真”和“假”两种答案,还有一种“不知道”。在三进制逻辑学中,符号“1”代表“真”;符号“-1”代表“假”;符号“0”代表“不知道”。显然,这种逻辑表达方式更符合计算机在人工智能方面的发展趋势。它为计算机的模糊运算和自主学习提供了可能。只可惜,目前电子工程师对这种非二进制的研究大都停留在表面或形式上,没有真正深入到实际应用中去。 不过,凡事都有一个例外,三进制计算机并非没有在人类计算机发展史上出现过。其实,早在上世纪50、60年代。一批莫斯科国立大学的研究员就设计了人类历史上第一批三进制计算机“Сетунь”和“Сетунь 70”(“Сетунь”是莫大附近一条流入莫斯科河的小河的名字)。 “Сетунь”小型数字计算机的设计计划由科学院院士С·Л·Соболев在1956年发起。这个计划的目的是为大专院校、科研院所、设计单位和生产车间提供一种价廉物美的计算机。为此,他在莫大计算机中心成立了一个研究小组。该小组最初由9位年轻人(4名副博士、5名学士)组成,都是工程师和程序员。С·Л·Соболев、К·А·Семендяев、М·Р·Шура-Бура和И·С·Березин是这个小组的永久成员。他们经常在一起讨论计算机架构的最优化问题以及如何依靠现有的技术去实现它。他们甚至还设想了一些未来计算机的发展思路。 随着技术的进步,真空管和晶体管等传统的计算机元器件逐渐被淘汰,取而代之的是速度更快、可靠性更好的铁氧体磁芯和半导体二极管。这些电子元器件组成了一个很好的可控电流变压器,这为三进制逻辑电路的实现提供了可能,因为电压存在着三种状态:正电压(“1”)、零电压(“0”)和负电压(“-1”)。三进制逻辑电路非但比二进制逻辑电路速度更快、可靠性更高,而且需要的设备和电能也更少。这些原因促成了三进制计算机“Сетунь”的诞生。 “Сетунь”是一台带有快速乘法器的时序计算机。小型的铁氧体随机存储器(容量为3页,即54字)充当缓存,在主磁鼓存储器中交换页面。这台计算机支持24条指令,其中3条为预留指令,目前不用。 三进制代码的一个特点是对称,即相反数的一致性,因此它就和二进制代码不同,不存在“无符号数”的概念。这样,三进制计算机的架构也要简单、稳定、经济得多。其指令系统也更便于阅读,而且非常高效。 在这群天才青年日以继夜的开发和研制下,“Сетунь”的样机于1958年12月准备完毕。在头两年测试期,“Сетунь”几乎不需要任何调试就运行得非常顺利,它甚至能执行一些现有的程序。1960年,“Сетунь”开始公共测试。 1960年4月,“Сетунь”就顺利地通过了公测。它在不同的室温下都表现出惊人的可靠性和稳定性。它的生产和维护也比同期其它计算机要容易得多,而且应用面广,因此“Сетунь”被建议立即投入批量生产。 不幸的是,苏联官僚对这个不属于经济计划一部分的“科幻产物”持否定的态度。他们甚至勒令其停产。而此时,对“Сетунь”的订单却如雪片般从各方飞来,包括来自国外的订单,但10到15台的年产量远不足以应付市场需求,更不用说出口了。很快,计划合作生产“Сетунь”的捷克斯洛伐克工厂倒闭了。1965年,“Сетунь”停产了。取而代之的是一种二进制计算机,但价格却贵出2.5倍。 “Сетунь”总共生产了50台(包括样机)。30台被安装在高等院校,其余的则在科研院所和生产车间落户。从加里宁格勒到雅库茨克,从阿什哈巴德到新西伯利亚,全苏都能看到“Сетунь”的身影。各地都对“Сетунь”的反应不错,认为它编程简单(不需要使用汇编语言),支持反向波兰表示法,适用于工程计算、工业控制、计算机教学等各个领域。 有了“Сетунь”的成功经验,研究员们决定不放弃三进制计算机的计划。他们在1970年推出了“Сетунь 70”型计算机。“Сетунь 70”对三进制的特性和概念有了进一步的完善和理解:建立了三进制字节——“tryte”(对应于二进制的“byte”),每个三进制字节由6个三进制位(“trit”,约等于9.5个二进制位“bit”)构成;指令集符合三进制逻辑;算术指令允许更多的操作数长——1、2和3字节(三进制),结果长度也扩展到6字节(三进制)。 对“Сетунь 70”而言,传统计算机的“字”的概念已经不存在了。编程的过程就是对三进制运算和三进制地址的操作。这些基于三进制字节的命令将会通过对虚拟指令的编译而得到。当然,程序员们不必考虑这些——他们只需直接和操作数及参数打交道即可。 “Сетунь 70”是一台双堆栈计算机。其回叫堆栈用来调用子程序。这一简单的改进启发了荷兰计算机科学家艾兹格·W·迪科斯彻,为他日后提出“结构化程序设计”思想打下了基础。 “Сетунь 70”成了莫斯科国立大学三进制计算机的绝唱。由于得不到上级的支持,这个科研项目不得不无限期停顿下来。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。