48不用加减乘除做加法
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
利用位运算
1、2个数异或,相当于每一位相加,不考虑进位
2、2个数相与并左移一位,相当于 求进位
循环把1,2 两个步骤的结果相加,直到进位为0
1 public class Solution { 2 public int Add(int num1,int num2) { 3 int sum = 0; 4 if(num2==0) sum =num1; 5 while(num2!=0){ 6 sum = num1 ^ num2; 7 int carry = (num1 & num2)<<1; 8 num1 = sum; 9 num2 = carry; 10 } 11 return sum; 12 } 13 }