题目
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路
有空再补上 0.0
代码
/**
* 题目:
* 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
*
* 思路:
* 使用位运算
*
* @author peige
*/
public class _65_AddTwoNumbers {
public static int Add(int num1, int num2) {
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
while(carry != 0) {
int tmp = sum;
sum ^= carry;
carry = (carry & tmp) << 1;
}
return sum;
}
}
测试
public class _65_Test {
public static void main(String[] args) {
test1();
}
private static void test1() {
int res = _65_AddTwoNumbers.Add(1, 4);
MyTest.equal(res, 5);
res = _65_AddTwoNumbers.Add(1, -4);
MyTest.equal(res, -3);
res = _65_AddTwoNumbers.Add(1, 0);
MyTest.equal(res, 1);
res = _65_AddTwoNumbers.Add(-3, 0);
MyTest.equal(res, -3);
res = _65_AddTwoNumbers.Add(1000000, 99999);
MyTest.equal(res, 1099999);
res = _65_AddTwoNumbers.Add(1234, 54321);
MyTest.equal(res, 55555);
}
}