我是靠谱客的博主 传统墨镜,最近开发中收集的这篇文章主要介绍位运算总结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:利用位运算实现加法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部