1.spa
1的个数.net
int NumberOf1(int n){ int count = 0; while(n) { ++count; n=(n-1)&n; } }
一样一个问题,位运算能够提升程序的运行效率。code
下面讲一下关于奇偶性的判断。blog
常规方法class
public static boolean isOdd(int i){效率
return i % 2 != 0;二进制
}程序
位运算方法方法
public static boolean isOdd(int i){static
return (i & 1) != 0;
}
public boolean isOdd(int a){ if((a&1) != 1){ //是奇数 return true; } return false; }
说明:
咱们知道计算机中的数字一般用二进制补码表示。
若是为正数,补码与原码相同,直接看最后一位(由于数字1的前面N位均为0,跟它作与运算,前面确定为0),奇数为1,偶数为0,与1相与,结果不变。
若是为负数,补码转原码:保持符号位不动,其它各位取反+1,即为负数的绝对值原码所有取反+1。仍是看最后1位,先取反,再+1,结果仍是和原来相同。进行与运算时仍是原来的末位,因此用跟1作与运算仍是保持原来的结果。--------------------- 做者:taizhoufox 来源:CSDN 原文:https://blog.csdn.net/taizhoufox/article/details/4583243 版权声明:本文为博主原创文章,转载请附上博文连接!