最简洁明了零基础看懂代码,自学程序员怎么入门

首页 > 时尚 > 作者:YD1662022-12-28 16:23:44

进行 A B 计算,例如 3 2 的和,3 的二进制是 11 (A1A0),2 的二进制是 10 (B1B0),

先算 A0 B0,输出 C1 = 0,S0 = 1,再计算 A1 B1 C1,输出 S1 = 0,C2 = 1,最终的结果由C2、S1、S0 拼成 1012 = 5。

要几位加法就用几个加法器串联,如四位(15 15):

最简洁明了零基础看懂代码,自学程序员怎么入门(13)

现在我们就有了一个 4 位加法器,已经达到了小学 2 年级的水平,是不是特别给力?

五、减法器

减法器其实是本质还是通过加法器实现的,比如 5 - 3,其实就是 5 (-3)。

十进制

原码

反码

补码

5

0000 0101

0000 0101

0000 0101

-3

1000 0011

1111 1100

1111 1101

先将十进制转为补码,再将补码输入全加器,这样就做到了减法计算。

六、乘法器

做完加法器我们再做个乘法器吧,当然乘任意10进制数是有点麻烦的,我们先做个乘2的吧。

乘2就很简单了,对于一个2进制数数我们在后面加个 0 就算是乘 2 了,比如

5 = 101(2) 10 = 1010(2)

所以我们只要把输入都往前移动一位,再在最低位上补个零就算是乘2了。

那乘 3 呢?简单,先位移一次(乘 2)再加一次。乘 5 呢?先位移两次(乘 4)再加一次。

所以一般简单的 CPU 是没有乘法的,而乘法则是通过位移和加算的组合来通过软件来实现的。

现在假设我们有加法器了,也有一个位移1位的模块了。把这两个模块串联起来你就能算 (A B ) * 2 了!激动人心,已经差不多到了小学 3 年级水平。

那我要是想算 A * 2 B 呢?

简单,把加法器模块和位移模块的接线改一下就行了,改成 A 先过位移模块,再进加法器就可以了。

改个程序还得重新接线?

所以你以为呢?编程就是把线来回插啊。

最简洁明了零基础看懂代码,自学程序员怎么入门(14)

早期的计算机就是这样编程的,几分钟就算完了但插线好几天。而且插线是个细致且需要耐心的工作,所以那个时候的程序员都是清一色的漂亮女孩子,穿制服的那种。

七、选择器

虽然和美女作伴是个快乐的事,但插线也是个累死人的工作。所以我们需要改进一下,让 CPU 可以根据指令来相加或者乘2。

最简洁明了零基础看懂代码,自学程序员怎么入门(15)

这个就简单了,sel 输入 0 则输出 i0 的数据,i0 是什么就输出什么。同理 sel 如果输入 1 则输出 i1 的数据。

有这个东西我们就可以给加法器和乘2模块(位移)设计一个激活针脚。

这个激活针脚输入 1 则激活这个模块,输入 0 则不激活。这样我们就可以控制数据是流入加法器还是位移模块了。

八、触发器

现在我们终于可以做 A × B C 了,这就需要先保存 A×B 的结果,在与 C 相加,等等...保存?话说在计算机内部是用什么方式保存数据的呢?

由于保存数据的重要性,电路中使用何种方式可以保存数据。比如使某个器件一直输出高电平,那不就是 1 了吗?一直输入低电平,那不就是 0 了吗?这里再引入一个触发器。

最简洁明了零基础看懂代码,自学程序员怎么入门(16)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.