概述
小编利用位运算实现加法的方法是没有技巧的,纯粹是模拟十进制加法的规则实现二进制的加法。
1 + 1 = 0; 1 + 0 = 1; 0 + 1 = 1;
# include <stdio.h>
//使用位运算实现加法,根据十进制的加法规则模拟二进制的加法规则
int Add(int a, int b)
{
/* i 为 int 型,共 32 位,所以循环32次,可将参数的每一位二进制遍历 */
for(int i=1; i; i<<=1)
{
/* 从右数第一位开始对 b 的二进制每一位判断是否为 1,以决定是否进位 */
if((b&i) != 0)
{
/* 从低位开始加,如 a 的低位也是 1,则进位,否则不做处理*/
for(int j=i; j; j<<=1)
{
/* 如果 a 的低位为 1,当前位进位变成0 */
if((a&j) != 0)
{
a &= ~j;
}
/* 如果 a 的低位为 0,当前位不变 */
else
{
a |= j;
break;
}
}
}
}
return a;
}
int main()
{
int a = 10;
int b = 20;
printf("%dn", Add(a, b));
return 0;
}
运行结果亲测正确。
最后
以上就是传统墨镜为你收集整理的位运算总结2:利用位运算实现加法的全部内容,希望文章能够帮你解决位运算总结2:利用位运算实现加法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复