布尔“(number&1)== 0”是什么意思?
在CodeReview上,我发布了一段有效的代码,并要求改进的技巧。我得到的是使用一种布尔方法来检查ArrayList是否具有偶数个索引(这是必需的)。这是建议的代码:
private static boolean isEven(int number){
return (number & 1) == 0;
}
因为我已经困扰了该特定用户很多帮助,所以我决定是时候该困扰SO社区了!我真的不明白这是如何工作的。调用该方法,并以ArrayList的大小作为参数(即ArrayList有十个元素,数字=
10)。
我知道有一个&
数字与1进行比较,但此后我迷路了。
我的阅读方式是,如果number == 0
和,则返回true 1 == 0
。我知道第一个是不正确的,而后者显然是没有意义的。有人可以帮我吗?
回答:
请记住,“&”是按位运算。您可能已经意识到了这一点,但是根据您提出问题的方式,这对我来说还不是很清楚。
就是说,理论上的想法是您有一个int,可以用一些1和0的序列以位表示。例如:
...10110110
在二进制中,因为它是基数2,所以当数字的按位版本以0结尾时,它是偶数,而当以1结尾时,它是奇数。
因此,对以上内容按1与1进行按位运算是:
...10110110 & ...00000001
当然,它是0,所以您可以说原始输入是偶数。
或者,考虑一个奇数。例如,将1加到上面的值上。然后
...10110111 & ...00000001
等于1,因此不等于零。瞧
以上是 布尔“(number&1)== 0”是什么意思? 的全部内容, 来源链接: utcz.com/qa/407792.html