二进制减法可通过以下两种方法实现,具体选择取决于应用场景:
一、逐位借位法(传统减法)
从最低位开始逐位相减,若被减数某位小于减数对应位,则向高位借1(相当于2),被减数该位加2,减数对应位减1,继续下一位运算。
- 例如:`1010 - 0110`
- 第2位:0-1不够减,向第1位借1,结果为10-1=1,第1位变为0;
- 第3位:0-1不够减,向第2位借1,结果为10-1=1,第2位变为0;
- 第4位:1-0=1,最终结果为`0100`(即4)。
注意事项
- 若减数大于被减数,需在结果前加符号位(如1表示负数),再按位取反加1得到补码结果;
- 适用于无符号数运算,需注意符号位处理。
二、补码加法法(计算机常用)
操作步骤
- 将减数取反(0变1,1变0)后加1,得到补码;
- 将被减数与减数补码相加,结果即为差值。
- 例如:`1010 - 1111`
- 减数1111的补码为`10001`(符号位为1表示负数);
- `1010 + 10001 = 11011`,结果为`10101`,符号位1表示负数,实际值为`-5`。
优势
- 无需逐位借位,简化运算,适合计算机硬件实现;
- 自动处理正负数运算,避免符号位混淆。
总结
逐位借位法: 适合教学和简单场景,需手动处理借位逻辑; 补码加法法