二进制数加法遵循“逢二进一”的规则,通过位运算实现逐位相加并处理进位。具体步骤如下:
一、基本规则
从右至左逐位相加,对应位相加结果为:
- `0 + 0 = 0`
- `0 + 1 = 1`
- `1 + 0 = 1`
- `1 + 1 = 10`(向高位进1)
二、位运算实现
分步计算
- 不进位结果: 使用异或运算 `A ^ B`,得到无需进位的二进制数。
- 进位结果:使用与运算 `A & B`,然后将结果左移1位 `<< 1`,得到需进位的位置信息。
- 迭代处理:将不进位结果与进位结果再次进行上述运算,直到进位为0。
- 最终结果:将不进位结果与最终进位结果进行位或运算 `|`,得到加法结果。
三、示例
以 `0100`(4)与 `1110`(14)相加为例:
`0100 ^ 1110 = 1010`
`(0100 & 1110) << 1 = 1100`
`1010 | 1100 = 10010`(18)
四、代码实现(Python)
```python
def add(a, b):
while b != 0:
ncb = a ^ b 不进位结果
cb = (a & b) << 1 进位结果
a, b = ncb, cb 递归处理
return a
示例
print(add(4, 14)) 输出 18
```
五、注意事项
若位数不同,需在较短的二进制数高位补0对齐。
该方法适用于正整数,负数需使用补码表示。