电路-cpu运算

两个数相加(a b)其实就是两个数异或加上两个数与操作并往左移动一位( a^b + ((a&b) << 1))

半加器

2个一位的加法操作只需要通过异或门计算出个位,通过与门计算出是否进位

比如 0 和 1

0^1 = 1  和为1
0&1 = 0  不进位
最终值为 01

比如1 和 1

1^1 = 0  和为0
1&1 = 1  需要进位
最终值为  10


全加器

上面半加器只能计算1位,如果需要计算2位,那么2个半加器组合,称为全加器


那么如果需要计算比如64位的,就需要很多的全加器组合



每一个全加器,都要等待上一个全加器,把对应的进入输入结果算出来,才能算下一位的输出。位数越多,越往高位走,等待前面的步骤就越多,这个等待的时间有个专门的名词,叫作门延迟(Gate Delay)


在硬件层面,我们通过门电路、半加器、全加器一层层搭出了加法器这样的功能组件。我们把这些用来做算术逻辑计算的组件叫作 ALU,也就是算术逻辑单元。当进一步打造强大的 CPU 时,我们不会再去关注最细颗粒的门电路,只需要把门电路组合而成的 ALU,当成一个能够完成基础计算的黑盒子就可以了



减法可以用加法模拟


乘法

乘法其实就是加法 + 位移操作,位移位移操作可以理解为把对应的线路错位来接


下面是乘法的硬件结构示意图


除法

现代cpu由于改进,除法跟乘法很相似


所以平时写代码时,逻辑运算与位移优先其次是加减,再是乘除


上一篇: 电路-门电路
下一篇: 浮点数与定点数
作者邮箱: 203328517@qq.com