一个三态对象难道不是能够立即存储更多信息和处理更大的值吗?我知道处理器目前使用大量的异或门网络,这需要重新设计。
既然我们已经发展到了64位(可以表示2^63种可能状态),计算等效的三进制 代数将支持具有比log(3^63-2^63)高30个十位数的数字。
我想象检测+1和0之间的电势差别应该与检测-1和0之间的电势差别一样容易。
硬件的某些复杂性、功耗或芯片密度会抵消存储和计算能力的任何收益吗?
一个三态对象难道不是能够立即存储更多信息和处理更大的值吗?我知道处理器目前使用大量的异或门网络,这需要重新设计。
既然我们已经发展到了64位(可以表示2^63种可能状态),计算等效的三进制 代数将支持具有比log(3^63-2^63)高30个十位数的数字。
我想象检测+1和0之间的电势差别应该与检测-1和0之间的电势差别一样容易。
硬件的某些复杂性、功耗或芯片密度会抵消存储和计算能力的任何收益吗?
构建使用超过两种状态/级别/其他的组件要困难得多。例如,逻辑中使用的晶体管要么关闭并且根本不导通,要么完全放开。将其设置为半开状态需要更高的精度并使用额外的功率。尽管如此,有时会使用更多的状态来打包更多数据,但很少这样做(例如,现代NAND闪存,调制解调器中的调制)。
如果您使用超过两种状态,则需要与二进制兼容,因为其他地方都在使用它。三个状态不行,因为将其转换为二进制将需要昂贵的乘法或余数除法。相反,您可以直接转到4或更高次幂。
这些是实际原因,说明为什么不这样做,但从数学上讲,基于三元逻辑构建计算机是完全可行的。
与其他进制相比,三进制是最高基数经济性的整数进制,紧随其后的是二进制和四进制。甚至一些现代系统使用一种三进制逻辑(也被称为SQL),将其实现为处理数据库中的NULL字段内容的一种方式。SQL使用NULL来表示缺失的数据。如果一个字段没有定义值,SQL假定这意味着实际值存在,但该值当前未记录在数据库中。请注意,缺失值与数字零或长度为零的字符串值都不同。即使将任何东西与NULL进行比较,甚至是另一个NULL,结果也会产生未知的真值状态。例如,对于具有“芝加哥”城市字段的记录,“City = 'Paris'” SQL表达式解析为FALSE,但对于具有空白城市字段的记录,则解析为UNKNOWN。换句话说,对于SQL来说,未定义的字段表示可能的任何可能值:缺失的城市可能代表巴黎,也可能不代表。这就是现代二进制系统中使用三进制逻辑的地方,尽管是粗略的。
mov eax,ebx
在任何指令集中都会执行完全相同的操作。但是,在三进制/二进制区别中,这不再是一个合理的保证:三进制寄存器可能与二进制寄存器看起来非常不同;mov eax ebx
可能对两种编码的含义不同。 - bionicOnion89 d8
在0/1位中保持不变,但在三进制中,您可以获得更多的操作码,其中任何一个16个三进制数中的一个可以是-1
。而这些不是相同的操作码。 - Jongware当然,每个比特能够存储更多的数据,就像我们的十进制数字系统可以在一个数字中存储更多的数据一样。
但这也增加了复杂性。二进制在许多情况下表现得非常好,使得操作变得非常简单。而对于三进制数字(或者说十进制数字),二进制加法器的逻辑要简单得多。
你不能神奇地存储或处理更多的信息。硬件必须更加庞大和复杂,以抵消更大的容量带来的优势。
很大程度上,这是因为在电子设备中,比特最终是由电脉冲表示的。因此,构建一个只需区分“有电荷”和“无电荷”,并能够轻松检测状态转移的硬件会更加容易。而采用三种状态的系统则需要更加精确地区分“有电荷”、“部分电荷”和“无电荷”。此外,在电子设备中,“有电荷”状态并不是恒定的:能量最终会开始“流失”,因此“有电荷”状态实际上的“能量水平”是变化的。在三态系统中,这也必须被考虑到。
首先,没有比位更小的信息单位。在位级别上处理信息是最基本和最基础的方法。
其次一个更加重要的原因是,制造具有两种稳定状态的电子元件比制造具有三种稳定状态的元件容易得多。
另外,您的数学有点错误。64位三进制数字中大约有101.4个二进制数字。解释:最大的64位三进制数是3433683820292512484657849089280(3^64-1)。要用二进制表示它所需要的是102个位:101011010101101101010010101111100011110111100100110010001001111000110001111001011111101011110100000000
这很容易理解,log2(3^64)约为101.4376