位运算(1的个数;2.判断奇偶)
Posted 你从哪里来?要到哪里去?我又在哪里?
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位运算(1的个数;2.判断奇偶)相关的知识,希望对你有一定的参考价值。
1.
1的个数
int NumberOf1(int n){ int count = 0; while(n) { ++count; n=(n-1)&n; } }
同样一个问题,位运算可以提高程序的运行效率。
下面讲一下关于奇偶性的判断。
常规方法
public static boolean isOdd(int i){
return i % 2 != 0;
}
位运算方法
public static boolean isOdd(int i){
return (i & 1) != 0;
}
说明:
我们知道计算机中的数字通常用二进制补码表示。
如果为正数,补码与原码相同,直接看最后一位(因为数字1的前面N位均为0,跟它做与运算,前面肯定为0),奇数为1,偶数为0,与1相与,结果不变。
如果为负数,补码转原码:保持符号位不动,其它各位取反+1,即为负数的绝对值原码全部取反+1。还是看最后1位,先取反,再+1,结果还是和原来相同。进行与运算时还是原来的末位,所以用跟1做与运算还是保持原来的结果。
---------------------
作者:taizhoufox
来源:CSDN
原文:https://blog.csdn.net/taizhoufox/article/details/4583243
版权声明:本文为博主原创文章,转载请附上博文链接!
以上是关于位运算(1的个数;2.判断奇偶)的主要内容,如果未能解决你的问题,请参考以下文章