二进制加法遵循“逢二进一”的规则,通过逐位相加并处理进位来实现。具体步骤如下:
一、基本运算规则
逐位相加 从最低位(最右边)开始,将对应位相加:
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 0 = 1
- 1 + 1 = 10(向高位进1)
处理进位
若某一位相加结果为10,则向高位进1,当前位保留0。例如:1 + 1 = 10,其中10表示当前位为0,进位1传递到下一位。
二、示例计算
以二进制数 `100111` 和 `11010` 相加为例:
```
100111
+ 11010
100001
```
最低位: 1 + 0 = 1 第二位
第三位:0 + 0 + 1(进位)= 1
第四位:1 + 1 = 10(进1)
第五位:0 + 0 + 1(进位)= 1
第六位:1 + 1 = 10(进1)
第七位:无数字,进1保留
三、代码实现(递归方法)
```python
def add(a, b):
ncb = a ^ b 不需要进位的加法
cb = (a & b) << 1 需要进位的加法
if ncb & cb != 0: 若有进位,递归处理
return add(ncb, cb)
return ncb | cb 最终结果
```
步骤:
1. 通过异或运算(`^`)计算无进位结果;
2. 通过与运算(`&`)并左移一位计算进位;
3. 若存在进位,递归调用函数;否则返回无进位结果。
四、注意事项
位数对齐:确保两个二进制数位数相同,高位补0(如 `100111` + `001101`);
溢出处理:在固定位数运算中,需注意结果是否超出位数限制。