求两个整数之和
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
来源牛客。
1 public int Add(int num1,int num2) { 2 //调用函数,当然函数底层肯定用了运算符号! 3 //return Integer.sum(num1,num2); 4 /*if(num1 < 0){ 5 while(num1 != 0){ 6 num2--; 7 num1++; 8 } 9 }else{ 10 while(num1 != 0){ 11 num2 ++; 12 num1 --; 13 } 14 } 15 return num2; 16 */ 17 //方法三:用位运算,二进制加法 18 while(num1 != 0){ //num1作为进位 19 //不考虑进位的情况下两个二进制数相加,即求异或 20 int sum = num1 ^ num2; 21 //把进位记录下来,即求与再左移1位 22 num1 = (num1 & num2)<<1; 23 //重新参与运算 24 num2 = sum; 25 } 26 return num2; 27 }