如何用位运算实现整数的加减法
发布网友
发布时间:2022-10-03 12:59
我来回答
共1个回答
热心网友
时间:2023-10-10 11:18
如何用位运算实现整数的加减法
位运算的思想可以应用到很多地方,这里简单的总结一下用位运算来实现整数的四则运算。
1.整数加法
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
int Add(int a,int b)
{
for(int i = 1; i; i <<= 1)
if(b & i)
for(int j = i; j; j <<= 1)
if(a & j) a &= ~j;
else {a |= j; break;}
return a ;
}
我的思路主要是利用a+1的位运算就是最左端(从第0位开始向左)连续的1变为0,原先a中为0的位置最低那一位变为1。
在不同的位上加1,那就是从相应的位开始向左计算,右边不变。
下面还有一个网上的思路,我觉得这个更好:
[cpp] view plain copy 在CODE上查看代码片派生到我的代码片
int Add(int a,int b)
{
if(b == 0) return a;//没有进位的时候完成运算
int sum,carry;
sum = a ^ b;//完成第一步没有进位的加法运算
carry=(a & b) << 1;//完成第二步进位并且左移运算
return Add(sum,carry);//进行递归,相加
}