我是靠谱客的博主 传统墨镜,这篇文章主要介绍位运算总结2:利用位运算实现加法,现在分享给大家,希望可以做个参考。

小编利用位运算实现加法的方法是没有技巧的,纯粹是模拟十进制加法的规则实现二进制的加法。

 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(138)

评论列表共有 0 条评论

立即
投稿
返回
顶部