二进制减法运算规则如下,结合逐位相减和借位处理实现计算:
一、基本规则
0-0=0, 1-0=1, 1-1=0(无需借位)
1-0=1, 0-1=1(模二加法或异或运算)
二、逐位相减法(借位处理)
补码操作
将减数(被减数)取反加1,得到补码。例如,减数 `b` 为 `1010`,其补码 `b'` 为 `0101`(即 `1010` 取反为 `0101`,再加1)。
逐位比较
从最低位开始,比较被减数 `a` 和补码 `b'` 的每一位:
- 若 `a[i] >= b'[i]`,结果位为 `1`,并继续处理下一位;
- 若 `a[i] < b'[i]`,结果位为 `0`,并向前一位借1(相当于结果位加2)。
处理借位
若某位需借位,则将高位结果加1,继续当前位减法。
三、示例
计算 `1010 - 1011`:
1. 取反加1:`1011` → `0100`(补码)
2. 逐位相减:
- 第0位:`0 >= 0` → 结果 `0`,无借位
- 第1位:`1 < 0` → 结果 `0`,向前借1
- 第2位:`0 + 1 = 1 >= 0` → 结果 `1`,无借位
- 第3位:`1 >= 0` → 结果 `1`,无借位
3. 最终结果:`0100 - 1011 = -0001`(即 `-1`)
四、注意事项
二进制减法本质是加法运算(减数取反加1)
借位操作需逐位处理,确保结果正确
结果可能为负数,需注意符号位处理