二进制减法可通过以下两种方法实现,具体选择取决于应用场景:
一、借位法(传统减法)
将被减数和减数从右向左对齐,位数不足时在高位补0。
逐位相减
从最低位开始比较:
- 若被减数当前位≥减数,则直接相减,结果写在对应位。
- 若被减数当前位<减数,则向高位借1(相当于2),当前位加2后继续减,高位减1。
处理借位
借位后需注意进位或借位传递,最终结果按位组合。
从右向左逐位相减:
第0位:0-1,借位后10-1=1,结果为1。 - 第1位:0-0=0。 - 第2位:0-1,借位后10-1=1,结果为1。 - 第3位:1-0=1。- 最终结果为 `0011`(即十进制的3)。
二、补码法(加法替代减法)
若减数为负数,需先将其转换为补码形式:
- 取反(0变1,1变0)。 - 加1。
执行加法
将原被减数与补码减数相加,结果即为差值。
`-1111` 的补码为 `10001`(符号位为1表示负数)。- 执行加法:
`1010 + 10001 = 10011`(结果为负数,符号位1表示)。- 最终结果为 `-5`(二进制 `101`)。
总结
借位法适用于无符号数或需要逐位精确计算的场景,但易出错。- 补码法更高效且适用于计算机底层运算,尤其适合处理负数。