为什么计算机使用二进制,从某种意义上说为什么它们使用只能表示高低状态的位?我正在阅读“逻辑与计算机设计基础”(M. Morris Mano、Charles R. Kime(作者)和 Tom Martin),但不明白他们的原因:
考虑一个有 10 个值代表十进制数字的系统。在这样的系统中,可用电压(例如 0 到 1.0 伏)可以分为 10 个范围,每个范围的长度为 0.1 伏。电路将提供这 10 个范围内的每个范围内的输出电压。电路的输入需要确定施加的电压位于 10 个范围中的哪一个。如果我们希望允许电压上的噪声,那么对于给定的数字表示,输出电压可能被允许在小于 0.05 伏的范围内,并且输入之间的边界变化可能小于 0.05 伏。这将需要复杂且昂贵的电子电路,并且输出仍可能受到制造或使用过程中电路中出现的微小“噪声”电压或微小变化的干扰。
那么,如果有可能准确检测 0.05v 的变化并屏蔽噪音,我们会使用具有 10 个状态的计算机吗?如果是,那么发明这种可以检测 0.05v 变化的设备是否只是一个问题?为什么不增加规模;例如,使范围为 0-50 伏,并具有每 5 的倍数(例如 0,5,10,15,...,50)的状态,并允许 +/- 2V 的噪声?
Jam*_*han 12
根本原因是:构建二态逻辑更容易,而且 99% 的时间任何更复杂的东西都没有实际优势。
事实上,构建四个内存单元,每个内存单元都有两种状态(可用于以 BCD 表示法存储十进制数字)比构建单个内存单元要容易得多(意味着更小、更便宜、更可靠)可以存储和读出 10 个状态。
任何未来的技术改进都可能改善 1-of-10 的内存,是的。但是,同样的技术发展也可以应用于二进制电路,使它们更小、更可靠,并且使用更少的功率。二进制电路将比十个电压电平之一的电路改进得更快,因为二进制电路执行从根本上更简单的工作。所以十个电路之一永远无法赶上。
使用更高的电压是不可能的。你会增加功耗;并且信号线中的电压越高,它们辐射的噪声就越多(因此它们更有可能破坏其他信号)。事实上,我们目前运行的信号走线彼此非常接近,以至于在 50 伏电压下您必须担心电弧放电,而不仅仅是电容耦合!现代 CPU 的趋势是使用越来越低的电压,而不是更高。
此外,二进制编码虽然在第一次遇到时看起来很奇怪,但在很多方面都非常方便。二进制加法器电路的设计远比使用上述变化电压电平的加法器简单得多(且更可靠)。(而且我什至不想考虑如何进行乘法、除法或浮点运算。)另外,无论如何,您都需要二进制数字逻辑来实现计算机处理器的其余部分。
人类更喜欢使用十进制数与计算机打交道的事实几乎无关紧要:二进制和十进制之间的转换是一个微不足道的代码。
值得注意的是,有一些非常早期的计算机将数字存储为十进制数字。但是他们没有在不同的电压水平下做到这一点。取而代之的是,他们使用了称为“环形计数器”的电路,实际上,这种电路设置了十位内存,以便一次只能使十位中的一位为“1”。(查找“dekatron”。)
后来出现了“十进制”计算机,如 IBM 1401 和 IBM 1620,但同样,它们都从根本上使用二进制存储。这些位只是用来以各种方式表示十进制数字。例如,1401 使用“二进制编码的十进制”,其中一组四位用于对每个十进制数字进行编码。像这样的计算机在他们那个时代非常成功,大多数计算器仍然以这种方式工作。
简而言之,尽管十进制表示似乎更有意义,但这真的只是因为这是我们作为一个文明所习惯的。通过每一种工程措施,二进制表示对计算机电路更有意义。(无论如何,如果我们再聪明一点,我们就会长大后用手指来数二进制,而且我们不仅能够数到 10,而且能够数到 1023!:))
你引用的文章很好地回答了你的问题,你只需要多考虑一下。
使用二进制表示进行电子数据存储和传输的主要原因是电路的复杂程度和噪声容限。
另一个重要原因是,出于数据存储目的,二进制是最小的公分母。您可以有效地以二进制形式表示任何数据,而无需任何开销。尝试表示非常简单(例如二进制)数据时,使用多于 2 的状态通常会导致开销
关于你问题的最后一部分,我必须提醒你,随着电子元件行业的发展,我们正在朝着更低的电压而不是更高的方向发展。在您的计算机主存储器 IO 引脚上使用 50 伏电压将非常不切实际、危险且昂贵。现代计算机内存通常使用 1.5V 左右的电压。
我推荐以下阅读:
归档时间: |
|
查看次数: |
2348 次 |
最近记录: |