二进制减法操作可通过以下两种方法实现,具体选择取决于数值类型:
一、逐位借位法(适用于无符号数或正数减法)
对齐位数 将被减数和减数按位对齐,从最低位(右侧)开始逐位相减。
借位规则
- 若当前位被减数≥减数,则直接相减,结果为0或1。
- 若被减数<减数,则向高位借1(相当于2),此时当前位变为10(二进制),再减去减数,结果为10减去减数对应的二进制值。
处理借位
每次借位后,高位减1,当前位加2(即10),继续向更高位传递借位。
示例: 计算 `1010 - 0011` 个位:0-1,借位后为10-1=1 十位:0-1(已借位),借位后为10-1=1 百位:0-0=0 千位:1-0=1
结果:`0011`(十进制6)。
二、补码加法法(适用于有符号数减法)
处理减数
将减数按位取反(0变1,1变0),然后加1,得到减数的补码。
执行加法
将被减数与减数的补码相加,忽略进位,结果即为差值。
结果判断
- 若最高位为0,结果为正数;
- 若最高位为1,结果为负数,需再次取反加1得到最终值。
示例: 计算 `1010 - 1111` 减数1111的补码为 `10001`(1+0000+0001=10001) `1010 + 10001 = 11011`(二进制)
最高位为1,取反加1得 `00100`(十进制-5)。
总结
无符号数/正数:优先使用逐位借位法,操作直观但易出错。
有符号数:采用补码加法法,符合计算机底层运算逻辑。