gpt4 book ai didi

java - 这个 boolean 值 "(number & 1) == 0"是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 11:47:35 27 4
gpt4 key购买 nike

On CodeReview我发布了一段工作代码,并要求提供改进它的提示。我得到的一个方法是使用 boolean 方法来检查 ArrayList 是否具有偶数个索引(这是必需的)。这是建议的代码:

private static boolean isEven(int number)
{
return (number & 1) == 0;
}

由于我已经纠缠该特定用户以寻求很多帮助,因此我决定是时候纠缠 SO 社区了!我真的不明白这是如何工作的。该方法被调用,并将 ArrayList 的大小作为参数(即 ArrayList 有十个元素,number = 10)。

我知道一个 & 运行数字和 1 的比较,但之后我就迷路了。

按照我的阅读方式,如果 number == 01 == 0 则返回 true。我知道第一个不是真的,后者显然没有意义。有人可以帮帮我吗?

编辑:我可能应该补充一点,代码确实有效,以防有人想知道。

最佳答案

请记住,“&”是按位运算。您可能知道这一点,但根据您提出问题的方式,我并不完全清楚。

话虽如此,理论上的想法是你有一些 int,它可以通过一些 1 和 0 的序列以位表示。例如:

...10110110

在二进制中,因为它是以 2 为底,所以当数字的按位版本以 0 结尾时,它是偶数,而当它以 1 结尾时,它是奇数。

因此,用 1 对上述进行按位 & 是:

...10110110 & ...00000001

当然,这是0,所以你可以说原来的输入是偶数。

或者,考虑一个奇数。例如,将 1 添加到我们上面的内容中。那么

...10110111 & ...00000001

等于 1,因此不等于 0。瞧。

关于java - 这个 boolean 值 "(number & 1) == 0"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905643/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com