首页 > 代码库 > 不用加减乘除做加法
不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
分析:对数字做运算,最常用的就是四则运算和位运算了,这里要求不能使用四则运算,那么我们可以考虑位运算,可以用位运算来进行加法运算。首先,举两个例子:
例1.
12+13(1100+1101)
1100 ^ 1101 = 0001(对应位相加,不考虑进位)
1100 & 1101 = 1100(1代表产生进位的地方)
11000 ^ 00001 = 11001 = 25(进位左移一位,与不考虑进位时的结果相加,不考虑进位)
11000 & 0001 = 0(无进位,则上一步异或的结果为左后的结果)
例2.
15+6(1111+0110)
1111 ^ 0110 = 1001
1111 & 0110 = 0110
01100 ^ 1001 = 00101
01100 & 1001 =01000
010000 ^ 00101 = 10101 = 21(结果)
010000 & 00101 = 0(结束)
实现:
1 public class Num48_Add { 2 public int Add(int num1,int num2) { 3 int and = num1 & num2; 4 int xor = num1 ^ num2; 5 6 while(and!=0){ 7 int temp = xor; 8 xor = (and<<1) ^ xor; 9 and = (and<<1) & temp; 10 }11 return xor;12 } 13 }
不用加减乘除做加法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。