见证家国情怀的壮丽史诗——《和平之上》漫画,免费阅读无删减震撼来袭!

核心内容摘要

爱的无界:当成熟魅力邂逅青春活力
寻找光影的终极乌托邦:在“天堂а在线中文在线”遇见灵魂的栖息地

搞事情time:十分野性,十分不羁的“恶心十分钟”体验指南

题目链接

两整数之和 - 力扣LeetCode

题目要求给你两个整数a和b不使用运算符和-计算并返回两整数之和。

示例 1输入a 1, b 2输出3示例 2输入a 2, b 3输出5

解决思路分析这道题要求我们求两数之和但是又不允许使用-运算符所以我们可以使用位运算来解决这道问题本体需要使用的是异或和与位运算在位运算中存在这样两个结论①异或的结果是无进位相加的结果 ②相与的结果是各位的进位只需要将两个数异或的结果与相与的结果向左移一位再相加就是最终结果但是本体又不允许使用加减运算符而上述的两个步骤就等同于相加所以我们只需要循环重复这两个步骤知道进位为零就可以了。

算法原理①异或结果为无进位相加任何数字都可以转成二进制在二进制中如果两个数不相同异或结果就是1相同就是0相同的结果有两种“00”、“11”“00”相加结果就是0而11相加结果是进位1所以该位还是0两个不同的数字“01”异或后1相加也为1所以该位就是1由上可知异或的结果就是无进位相加的结果。

②相与的结果就是该位的进位数这点很简单如果两位都为1那么两位相加就要进1而相与后结果就是1如果两位中有一个为0相加后都不需要进位与相与结果都为0所以说相与的结果就是该位的进位数。

注意求出相与的结果后需要向左移一位再与相异的结果相加因为相与的结果是该位的进位还没进呢向左移一位就是进了。

代码展示int getSum(int a, int b) { while(b) { int x a ^ b; int carry (a b) 1; a x; b carry; } return a; }

爱液官网不用下载登录-爱液官网不用下载登录应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123