题目
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路
有空再补上 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);
}
}