C语言 位运算加法

学习了位运算后总想着怎么把它用在程序中,奈何知识量有限,在这里便写一个位运算实现两数之和的功能》
首先我们得先了解位运算的三个基本操作符:

& 按位与—(有0为0,双1位1 )
I 按位或—(有1为1,双0为0)
^ 按位异或—(不同为1,相同为0)

接下来我们想要用位运算解决两数之和,得先知道他们的二进制形式。
例如:2+3=5

2 0010
3 0011
5 0101

不难看出第二位发生了进位,那么我们怎么用符号实现呢:

(2 & 3)<<1 (0010 & 0011)<<1 = 0100
2^3 0010 ^0011 = 0001
5 0100^0001 = 0101

虽然上述看似成立了,但是运算起来仍然有问题,这里仅仅考虑到了单次进位,假设有多次进位那么这个等式便不成立。
而很自然的想到连续进位那么就会联想到循环,下面这个代码便用了循环实现多次进位&

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值