-->

二进制减法的实现

2020-12-04 01:58发布

减法的基本运算过程:

在求253-176的过程中,个位由于3小于6,需要从十位借一位,之后用13-6得到7,十位4-7,需要从百位借位,14-7得到7,最后的结果为77

 

避免借位的减法:

如果我们用十进制中的最大数来减,这样就可以不用借位了,上一步的求解过程就可以分解为如下:

253+(999-176)-999

1076-999

这时,发现还是需要借位,那如果能够减去十进制中的最小数,就不需要借位了

253+(999-176)+1-999-1

即为253+(999-176)+1-1000=1077-1000

 

值为负数的减法:

176-253,可以翻转之后值取反,为了统一,我们还是按照上面的思路来

176+(999-253)-999

922-999

如果按照上面来走,即为922-999+1就不对了,通过观察,我们发现999-922刚好不用借位,只需要值求反即可

 

二进制的减法:

11111101-10110000

同理,我们求减数的1的补码(十进制中,用9减去,即为9的补码),减数的1的补码为11111111-10110000位01001111,可以看到,二进制的补码即为1变0,0变1

因此,二进制的补码也可以叫做反码

之后,我们被减数+反码,即11111101+01001111=101001100

之后,结果加1,在减去(11111111+1),(101001100+1)-100000000=01001101

总过程如下:11111101+(11111111-10110000)+1-(11111111+1)

 

八位二进制减法:

本例只适用于值为正数的结果

如果被减数大于减数,那么结果肯定大于0,如果在加一个全为1的八位二进制后,必然会多出一个第九位,而刚好我们最后要减去一个第九位为1的其他全为0的二进制

这样,我们只需要舍弃第九位即可,因为我们是八进制计算器,因此第九位溢出被去掉,结果刚好为减法的结果

因此,八位二进制减法简化为如下步骤:

1.减数取反

2.被减数+减数的反码

3.结果再加1

 

 

 

  

标签: