一些用位运算解决的方法
2013-03-15 16:35 java20130722 阅读(203) 评论(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); }