为什么计算机以二进制工作?

时间:2011-03-02 08:21:36

标签: binary hardware computer-science

我做了一些搜索,但没有找到一个真正令人满意的答案。作为开发人员,我想投入必要的时间来理解这一点,因此我正在寻找一个完整的解释,并随时提供任何有用的参考。

感谢。

10 个答案:

答案 0 :(得分:18)

我建议book购买此Andrew S. Tanenbaum。他开发了一个名为Minix的Linux前身。我使用Structured Computer Organization作为我大学课程的一部分。

为什么计算机使用二进制文件不仅仅是交换机上下文的问题。

相对于参考电压,例如3v。 + 1v(4v)=真或1和-1v(2v)=假或0.

它还与最efficient method of creating controlling or logic circuits有关。这与实施成本有关。与使用十进制或模拟see this answer的电路相比,构建使用二进制的电路需要多少钱。

如果比较适用于现代CPU的数十亿二进制电路晶体管。使用十进制(或模拟)系统执行此操作的成本会因您现在必须添加更多控制电路而成倍增加您想要添加的每个数字。

如果您想了解一些有助于制作二进制文件的最重要的贡献组件,那么逻辑和控制电路的默认标准就是阅读并理解维基百科的以下主题。阅读最重要的主题大约需要4个小时,这些主题与用于创建电路的一些电气工程有关。

我试图在这个概念列表中完成您需要了解实际开关如何工作以及它们的使用原因。以及为什么Binary Arithmetic在硬件中是如此有效的计算形式。

  • Transistor types了解pnp and npn transistor types以了解构成开关的实际电路是如何工作的。这些电路制造起来非常便宜,并且可以缩小到极小(纳米)尺寸
  • Logic Circuitry.如果您了解基本逻辑电路,您将了解实际晶体管类型如何用于实现它们。这些涉及一些编程结构,如“和&&” “或||”和“如果,分支”构造。
  • DigitalCircuitry使用完全缺点部分比较模拟 和数字电路
  • NAND Logic Gate很重要,因为所有其他逻辑门电路只能使用这一个逻辑门来实现。简化制造过程,因为用于创建电路的机器的复杂性可以简化。
  • Adder Circuits了解如何使用逻辑门完成基本添加。
  • Twos Complement这对理解实际CPU中的数字表示非常有帮助。在CPU中实现这种类型的算法也非常便宜,因为它需要更少的晶体管。例如,需要进行加法和减法的简单加法电路。如果你添加一个负数你会得到正确的答案,即+7 +( - 4)= +3。这也有助于理解integer overflow
  • Binary_number
  • 这些是用于控制其他电路的最常用的马戏团。这些控制何时打开和关闭电路。 Decoder Encoder如何(if或branch)条件逻辑实现。
  • Multiplexer是如何完成路由的基础。在CPU,BUS和网络中。大多数数字设备中最常见的逻辑电路之一。

现在有些硬核的东西。 C.和C ++用于编写与实际硬件对话的device drivers。如果您真的想了解某些设备如何工作,您的CPU和/或外部设备learn Assembler。您将开始了解如何通过将某个器件寄存器设置为特定值来关闭器件,逻辑电路将读取该值以更改器件状态。例如,您将理解为什么(0101)base2 = 5(二进制相关的东西)将通过电路路由特定方式来打开和关闭设备。

答案 1 :(得分:14)

即使使用十进制数字,也可以构建计算机,但从工程角度来看,仅区分两种状态会更安全。

值1(+ 5V)的电压只是一个理论值,在实际中它总是有点不同。如果他们用小数点完成计算机,就没有办法判断+ 4.75V是9还是10。

答案 2 :(得分:2)

这是因为逻辑门如何工作:如果控制电压超过某个阈值,则存在逻辑输出(1);没有逻辑输出(0),如果没有。

但可能更为重要:

也许有一次,当基于量子的机器出现时(或者其他类似的东西可能会鼓励更复杂的状态表示),计算机不再能用二进制工作了。 但由于二进制值是任何(更复杂)状态的最简单表示,即使在“量子时间”,最好还是留在使用二进制工作的计算机(从其他物理表示中抽象出来)三元左右,如果给出的话。)

答案 3 :(得分:2)

答案 4 :(得分:1)

计算机使用电力作为运输信息的手段。使用电力作为信息的最简单方法是开启或关闭(1或0)。

当然,您可以使用不同的电压来表示不同的数字,但这样做的电子元件非常复杂。

同样重要的是要注意,写入和读取1和0的能力足以计算任何计算,这称为Turing completeness,因此不需要找到一些更复杂的系统,而不是二进制

(好的,要彻底,图灵完整性只能通过无限的记忆来实现,但这在这里并不重要。)

答案 5 :(得分:0)

嗯,我想你需要考虑PC内的IC,每个IC有数百万个门,主要是NANDS或NORS,每个计算分别是真或假,即0或1,因此二进制数就足够了。希望很清楚: - )

答案 6 :(得分:0)

好的......我会就此给出你的意见,但首先要说我是一名专家,所以我必须小心谨慎。

在所有这些硬件的底部,门和晶体管,一台计算机它不再是一个电路。在电路的每个部分,电脉冲都可以流动......或者不流动(这是一个简化的版本,请参阅paxdiablo评论)。 2个州。这两个状态可以用0或1来表示。那就是二进制!

事实上,数学计算可以在每个基础上进行,唯一的原因是因为人类使用基数10是我们(使用)有10个手指所以我们很容易理解。数字系统有两种状态,因此base-2是它们的最佳选择。

答案 7 :(得分:0)

在计算机中,我们总是选择复杂程度最低的东西来帮助我们加快计算速度。 所以,如果我们看到二元是最不复杂的那么......

在这里考虑数字1000,

对于一元: - 输入符号{0}               没有数字代表1000: - 1000,               复杂性: - 1000 * 1 = 1000

二进制文件: - 输入符号{0,1}               没有数字代表1000: - 10,               复杂性: - 10 * 2 = 20

对于三元: - 输入符号{0,1,2}                没有代表1000的数字: - 7,                复杂性: - 7 * 3 = 21

对于十进制: - 输入符号{0,1,2 ... 9}                没有数字代表1000: - 4,                复杂性: - 4 * 10 = 40

因此,我们看到二元的复杂性最低。

答案 8 :(得分:-1)

因为计算机是状态机,它们主要理解两种状态。也就是说,开关,它涉及电力。这是主要原因。

另外,你怎么能找到T恤说有10种类型的人,那些懂二进制的人和那些不懂的人? :)

答案 9 :(得分:-1)

计算机主要处理电信号;作为一个愚蠢的机器,它只能理解“高”和“低”。高为+ 5v,低为0v。 (V伏)。因此,二进制1代表高或“开”。 0代表'低'或'关'。因此,需要二进制才能使计算机理解某些东西。