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

标签 binary hardware computer-science

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

谢谢。

最佳答案

我建议买这个 book来自 Andrew S. Tanenbaum .他开发了 Linux 的前身之一,称为 Minix。我用过 Structured Computer Organization作为我大学类(class)的一部分。

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

相对于 3v 的引用电压。 +1v(4v) = 真或 1 和 -1v(2v) = 假或 0。

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

如果您比较一下现代 CPU 上安装的数十亿个二进制电路晶体管。对于要添加的每个数字,使用十进制(或模拟)系统执行此操作的成本呈指数增长,因为您现在必须添加更多控制电路。

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

我试图在这个概念列表中完成您需要了解实际开关的工作原理以及使用它们的原因。以及为什么是二进制 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如何实现(如果或分支)条件逻辑。
  • Multiplexer是路由完成方式的基础。在 CPU、BUS 和网络中。大多数数字设备中最常见的逻辑电路之一。

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

    关于binary - 为什么计算机以二进制工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5165013/

    相关文章:

    c - 它是如何制作从 poweron 到用户界面的 digicoder vcr dvd 播放器图形用户界面的?

    hardware - 寻找其他 'hardware video game kits'

    java - 选择信息丰富的类名

    algorithm - 洪水填充空间复杂度

    java - 0's and 1' s 的字符串作为位文件

    java - Redis/java - 写入和读取二进制数据

    c++ - 将二进制字符串转换为 ASCII 字符串 (C++)

    embedded - 中端嵌入式处理器

    unit-testing - 如何制作用于测试的扩展入口决策表

    c++ - 将 double 转换为 C(++) 中遗传算法的位数组