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