3 min read

为什么计算机要采用二进制?

为什么计算机要采用二进制?
Photo by Hope House Press - Leather Diary Studio / Unsplash

4/100

现在我们都知道计算机采用的是二进制进行数的表示和计算的,但是当时在设计计算机的时候为什么偏偏选择二进制,选择十进制不是更符合人们的阅读和使用习惯吗?

这个问题今天看到了一个合理的解释,但是给出这个解释之前,需要先了解一下“图灵机“

图灵机

图灵机是图灵在一篇讨论"什么是可计算的"的论文中提出的一个模型.  这个模型包含几个部分:

  1. 一个存储装置:一条无限延伸的纸带,被划分为N个格子,每个格子可以存储字母或数字。
image from wikipedia

2. 一个修改装置:他自身拥有一个存储自身状态(有限个)的存储器。(比如上图中的q1就是一种状态)并且可以:

  • 读取/修改存储装置(那条无限的纸带)上的数据
  • 沿着存储装置向左或向右移动
  • 能够接受一个外部程序(外部指令)

这里有一个依据理论模型实现的机器视频:

如果采用十进制会怎么样

注意到修改装置是由一个能够接受外部指令或外部程序的地方。假如我们设计一个使用十进制的计算机,那么存储装置,也就是那条无限长的纸带上的每个格子就可以有10种情况(0~9),假定修改装置自身拥有3种状态(q1,q2,q3)。

现在我们需要向图灵机输入外部程序,这个外程序应该满足或涵盖在当前条件下(10种数字和3种状态)的所有情况。

如果我们用一行指令或代码来表示一种情况,要涵盖上述所有情况则需要\( 10*3=30\)行代码。

如果我们采用二进制,那代码行数只需要\(2*3=6\)行代码就可以实现。

结论

所以如果采用十进制,代码或指令的数量是采用二进制的好几倍。也有人计算过最合适的进制应该是欧拉常数\(e,e\approx 2.718281828...\) 最接近的正整数是3,但是3进制在电路实现上并不容易,所以最终选择了二进制。

有趣的资料: