用C或C编写一个三进制计算机有多容易?
显然,标准逻辑运算符(如&
、|
和^
)只有在使用二进制逻辑时才有意义。
对于整数值,C标准指的是取值范围,而C标准提到的是位长度(例如,long必须至少为32位)。这如何适用于使用三进制(即三进制位)的计算机?
一般来说,在三元体系结构上使用稍微修改过的C/C进行编程是可行的,还是应该从头开始设计一种新的编程语言?
需要考虑的要点是向后兼容性(假设二进制的程序是否可以很容易地编译为三进制架构,或者是否需要模拟二进制数据存储?)和C/C标准设计中隐含的假设。
2条答案
按热度按时间nwsw7zdq1#
C++标准的措辞假设了二进制架构:
[内存介绍]/1:
C++内存模型中的基本存储单元是字节,一个字节至少要足够大以包含基本执行字符集的任何成员和Unicode UTF-8编码形式的8位代码单元**,并且由一个连续的位序列**组成,其数量由实现定义。
[基本/基本]/4:
无符号整数应遵守算术模2 [的幂] n的法则,其中n是该特定大小的整数的值表示中的位数。
此外,* 比特字段 * 和 * 填充比特 * 是经常使用的概念。
像左移、右移这样的运算符也指的是位,按位与、按位或和按位异或根据定义是在位级别操作的运算,假设每个位是真或假。
如果标准适用于三进制架构会怎样?
我们可以想象,标准可以使用另一个术语来指定架构中最小的信息片段,其方式与 byte 类似(虽然字节通常为8位,但在标准中没有定义为字节,因此标准可以很好地与具有10位字节的机器一起工作)。
然而,后果将是可怕的:
* 附加备注 *
自从1948年诺伯特·维纳(Norbert Wiener)的《控制论》(Cybernetics)一书出版以来,)毫无疑问,二进制系统的替代品已经不存在了。在“* 计算机器和神经系统 *”一章中,他很好地解释了为什么数字机器比模拟机器更准确,性能更好,而且在数字机器中,二进制运算优于其他运算,因为它更简单、更快,而且实现起来更容易、更便宜。2目前,没有人能够证明相反的情况,所以很快就看不到三进制计算机体系结构。
* 评论 *
kmbjn2e32#
看看GitHub上的Louis-Dr三进制Verilog。问题是C做了太多的假设,需要备份或重新定义才能更具体地使用语言。他将二进制定义为可以携带0或1(位)的基本信号,将三进制定义为可以携带-1,0,或+1(trit)。因此,一个字节将是二进制[8],而一个三元组(trit)将是三进制[3]。决定?将是a?b:c:d。运算符和移位将根据被移位的内容进行工作。trit明智的逻辑运算可以通过其名称的k-map来定义。这与编程类似www.example.com汇编语言的东西是一致3niti.org的。如果你用三元思维,这一切都开始有意义。数值是用于来回转换二进制或平衡三进制值的数字。我将使用稍微修改的表示法来表示从-13=G开始的三进制的七进制表示法,因此G H K M N P R T V W X Y Z 0 1 2 3 4 5 6 7 8 9 A B C D不踩(重新定义)任何十六进制或八进制,并与日落九进制(2三进制从属)定义一致。