题目
- 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷四则运算符号
解法
/**
*
* 位异或:相同为0,不同为1
* 位与:有0为0,同1为1
*/
public static int addFunction(int a, int b) {
if (a == 0) return b;
if (b == 0) return a;
return addFunction(a ^ b, a & b << 1);
}
题目二
- 求给定整数中二进制数表示后1的个数
解法
/**
* 求给定整数中二进制数表示后1的个数
*
* @param n
* @return
*/
public static int getOneCount(int n) {
int result = 0;
while (n != 0) {
result++;
n = n & (n - 1);
}
return result;
}