首页 > 代码库 > 不用加减乘除做加法
不用加减乘除做加法
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:只能是位运算。 按位与,得到的结果就是两个数字都为1的位置,按位与得到的结果 再左移一位,就是进位进上去的那些数
在 按位异或, 0 1,1 0,得到1,0 0得到0.和加法的结果一致,1 1得到0,相当于加法进位之后的数,这个时候得到的结果就相当于加法操作 不过进上去的位都没有 加到高位上
。这个时候把刚刚得到的进位的那些数,加上不进位加法的结果就是最后的结果,,,可是不能用加法啊,这个时候把得到的这两个数字,重复上述操作,直到没有进位(与操作为0),没有进位这个时候 两个数字 进行或 或者 异或运算得到的结果和加法就一样了。
上代码
public class Solution { public int Add(int num1,int num2) { int n1=(num1&num2)<<1; int n2=num1^num2; while((n1&n2)!=0){ num1=n1; num2=n2; n1=(num1&num2)<<1; n2=num1^num2; } return n1^n2; }}
不用加减乘除做加法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。