二进制减法怎么算
1010
- 0111
0011
你好
二进制相减的具体规则跟真值的编码方式有关系,如:原码,补码等。
现在假设两数为无符号整数且总是较大减去较小。(因为无符号数不能表示负数,所以不能小减大)
将减数逐位取反,末位加1,然后与被减数相加即可,不需要考虑借位的问题。
例1:
被减数:110000 减数:010111(与被减数对齐)
减数取反(即0变成1,1变成0):101000
末位加1:101001
与被减数相加:
110000
101001
+
----------
1011001 (将超过被减数长度的部分丢弃)
11
+10
-----
101(舍去最左边的1既是正确答案 01)
11001010
+11110111
----------------
111000001(舍去最左边的1 即是正确答案:11000001)
由于存在这样一个事实:两个非负数相减,其值不可能大于这两者。也就是长度不能超过被减数,故将最左边的1丢弃
例2:被减数:11(十进制3),减数:10(十进制2);
减数取反加1:01+1=10(又变回来了)
相加:
如果一眼看过去没有借位的情况,直接减即可。取反加1倒是麻烦了
例3: 被减数:11001010(十进制 202),减数:00001001(十进制 9)
减数取反加一:11110111
相加:
以上。