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

Posted 一起学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客网·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语言编程__Plus的个人空间_哔哩哔哩_BilibiliC语言编程__Plus,素材源码来C/C++粉丝群:875887616;公众号:C语言编程学习基地;C语言编程__Plus的主页、动态、视频、专栏、频道、收藏、订阅等。哔哩哔哩Bilibili,你感兴趣的视频都在B站。https://space.bilibili.com/525280593

以上是关于牛客网·C语言练习不用四则运算符如何实现两数相加?的主要内容,如果未能解决你的问题,请参考以下文章

算法:通过逻辑运算实现两数相加

题集牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

python3 牛客网:OJ在线编程常见输入输出练习(ACM模式)

牛客网专项练习30天Pytnon篇第02天

如何用C语言编写一个求两数相加得和的小程序。

力扣每日一题 371. 两整数之和 (如何不用+和-让两数相加)