关于微机减法运算的学习笔记

[复制链接]
2507|0
手机看帖
扫描二维码
随时随地手机跟帖
搬砖的毛蛋|  楼主 | 2020-9-13 20:21 | 显示全部楼层 |阅读模式
本帖最后由 搬砖的毛蛋 于 2020-9-13 20:17 编辑

在微机的硬件系统中,其逻辑运算单元只有加法器,并没有减法器电路。所以,需要在软件算法上实现减法的运算。

可以想到利用时钟模型的原理:
632375f5e0de6eec18.png
当时钟到达12点时,有个清零的过程,即时钟重新开始从0点开始计时。
假设此时刚好为6点,则减去0点和加上12点是一样的,都是6点钟。
                        同理,减去1点和加上11点是一样的,都是5点钟。
                                 减去2点和加上10点是一样的,都是4点钟。
                                   …………
所以可以推出[X点-Y点]与[X点+(12-Y点)]表示的时钟点数是一样的,其中12定义为运算的

从上面时钟变换可以得到4位二进制数减法的运算规律:
67335f5e0df1b7960.png
数盘中,数字由时钟的0-12推广到(+0)~(-1),当递增到-1后,数据直接清零,其与相应表示的补码对应,二进制数据从0000加一递进到1111,当到达10000时,数据首位溢出,数据重新清零,所以此时运算的为16,二进制数据也重新从0000开始计数。

(X-Y)与X+(16-Y)值相同,
1.计算结果值为负数,例如X=6,Y=7有
常规计算:
(X-Y)=6-7=-1;
微机计算:
规定(16-Y)为-Y的补码,正数的补码就是本身。
所以有
X补+(-Y)补=0110+1001=1111=(-1)补
2.计算结果值为正数,例如X=7,Y=6有
常规计算:
(X-Y)=7-6=1;
微机计算:
X补+(-Y)补=0111+1010=10001,首位值溢出可以忽略,最终结果=0001=(1)补。

3.当计算结果不在-8~7的范围时,会产生溢出此时计算结果数据错误。

最后,微机里面所有的数都是以补码的形式保存的,所以最后得到的加法结果是需要进行一次补码运算,才能得到原有的值。


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝