一些用位运算解决的方法
2013-03-15 16:35 java20130722 阅读(209) 评论(0) 收藏 举报
所有程序均来自于网上。
1、判断奇偶
bool isEven(int n) {
if (n & 1) {
return true;
} else return false;
}2、改变符号
int changeSign(int n) {
return ~n + 1;
}3、取绝对值
int abs(int n) {
return (n ^ (n >> 31)) - (n >> 31);
}4、高地位互换
int exchange(unsigned int n) {
return (n >> 16) | (n << 16);
}5、二进制中 1 的个数
int count (int n) {
int num = 0;
while (n != 0) {
n &= (n - 1);
num ++;
}
return num;
}6、加法
int addWithoutArithmetic(int num1, int num2) {
if (num2 == 0)
return num1;
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
return addWithoutArithmetic(sum, carry);
}
浙公网安备 33010602011771号