【牛客网·C语言练习】不用四则运算符如何实现两数相加?
题目要求如图

思考

不能使用四则运算,根据过往的学习经历,我唯一能想到的就是位操作符和移位操作符
例:使用位操作符进行int变量交换
位操作符的使用
先来回顾一下位操作符的作用
位操作符操作的是整形的二进制位,它的操作数是2,比较两个整型的二进制位
(1)&按位与:对应的二进制 全为1才是1,否则0
(2)|按位或:对应的二进制 有1为1,全为0才为0
(3)^按位异或:相同为0,不同为1
比较一下正常的二进制相加和按位异或,发现按位异或是没有进位的相加

原本应该是010,但是按位异或后是000
1+1需要进位的1并没有进到下一位里去
而使用按位与操作符,我们可以得到这两个数相加需不需要进位

这时候将按位与之后的结果和按位异或相加,就是我们的答案了
但是题目要求不能使用加减
a.再将按位与的结果0 1 0与 按位异或结果0 0 0进行按位与
b.得到0 0 0,代表无需进位
c.这时候将0 1 0与0 0 0进行按位异或,即得出相加后的结果0 1 0
这个例子比较简单,我们可以再用复杂一点的例子再证明它的可行性
3:0011和5:0101

根据这个思路,我们成功地完成了3和5的相加
代码实现
本题是接口型题目,我们只需要完成一个函数,实现相加的功能

不过我们可以自己写一个主函数来测试它的可行性
如图,函数正确算出了两个数的和

如果这篇博客帮到了你,还请点个赞啦~
-----------------------------------
为了帮助大家,轻松,高效学习C语言/C++,给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!
微信公众号:C语言编程学习基地
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!大家也要把握住有限的时光,抓住成长的每一次机会哦~
编程学习书籍分享:

粉丝编程交流:


