欢迎光临散文网 会员登陆 & 注册

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

2022-08-23 15:36 作者:C语言编程__Plus  | 我要投稿

题目要求如图


思考


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

例:使用位操作符进行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语言零基础入门教程(83集全)

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!大家也要把握住有限的时光,抓住成长的每一次机会哦~

编程学习书籍分享:

粉丝编程交流:



【牛客网·C语言练习】不用四则运算符如何实现两数相加?的评论 (共 条)

分享到微博请遵守国家法律