第九课_CPU是如何计算2+3的

前言

这节课的内容可能比较难理解,能看懂的就看,看不懂的可以忽略之所以写这个,是想引出寄存器、数据宽度的概念。还有就是理解一下底层硬件的运行逻辑。

通过前一课的学习,应该比较了解与、或、非、异或等的逻辑运算了。那CPU的如何利用这些逻辑运算进行加法运算的呢,看下面的讲解。(可能有讲得不太准确的地方,欢迎指出)。

CPU要计算2 + 3,首先就要把23传给CPUCPU也需要容器保存这两个数据,这里所说的容器就是CPU的寄存器(记住这寄存器,后面讲汇编的时候详细讲),如果不好理解寄存器,那就把寄存器理解成一个装水的杯子。

第一步:CPU把23分别放到X杯子(寄存器)、Y杯子(寄存器)里。然后进行异或运算,得到的结果放到另一个R杯子(寄存器)。

第二步:判断运算是否结束。流程是这样的,先把X杯子、Y杯子中的数进行逻辑与运算,得到的结果再进行左移一位。

如果左移的结果是0,则说明计算结束,杯子R(寄存器)中的数据就是运算的结果。

如果左移的结果不是0,说明计算没有结束。那么就把杯子R中的数据复制到杯子X中,把左移的结果放到Y杯子中,然后继续重复步骤一的方法继续计算。 

第三步:因为第二步中判断到运算没有结束,再进行异或运算,把运算的结果保存到杯子R中。

第四步:判断运算是否结束:先进行逻辑与运算,然后把运算的结束进行左移,左移的结束刚好是0,说明运算结束,则杯子R中的数据0101(即十进制的5)就是2+3的运算结果。

什么是左移运算?二进制数,每一位数都向左移动,左边移出的位就舍去,左移后右边如果有空位,则补0。

有人会问为什么这样计算的?这可不好答,因为这些都是前辈们弄出来的,本id只是用自己的话描述一下而已。不过这种算法真的很巧妙,必须佩服那些为计算机事业作出巨大贡献的老前辈们。

好了,如果能理解上的算法。大家可以测试一下其他数据的加法。

最后如果大家想实现2-3,CPU又是如何运算的呢,减法也是使用上面的算法,不过这涉及到数据宽度的问题。数据宽度下节课再讲,这可能牵扯到大学的反码、补码,可能会颠覆一些大学里的看法。敬请期待。

写于2020.3.8 22:31

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值