程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

「牛客网·C语言练习」不用四则运算符如何实现两数相加?

balukai 2024-12-25 10:13:50 文章精选 83 ℃

题目要求如图

思考

不能使用四则运算,根据过往的学习经历,我唯一能想到的就是位操作符和移位操作符?

例:使用位操作符进行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/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

最近发表
标签列表