ACM-位运算符-判断奇偶

本文最后更新于:2020年12月4日 下午

同样一个问题,位运算可以提高程序的运行效率。

下面讲一下关于奇偶性的判断。

常规方法

1
2
3
4
5
public static boolean isOdd(int i){

return i % 2 != 0;

}

位运算方法

1
2
3
4
5
public static boolean isOdd(int i){

return (i & 1) != 0;

}

说明:

我们知道计算机中的数字通常用二进制补码表示。

如果为正数,补码与原码相同,直接看最后一位(因为数字1的前面N位均为0,跟它做与运算,前面肯定为0),奇数为1,偶数为0,与1相与,结果不变。

如果为负数,补码转原码:保持符号位不动,其它各位取反+1,即为负数的绝对值原码全部取反+1。还是看最后1位,先取反,再+1,结果还是和原来相同。进行与运算时还是原来的末位,所以用跟1做与运算还是保持原来的结果。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!