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

标签 java methods arraylist boolean int

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/

相关文章:

java - 错误:找不到或加载正在运行Hadoop的主类

java - 如何修复错误 502 状态

java - 即使修复了兼容性,也无法修复 Unsupported major.minor 版本 52.0

c# - 如何创建使用类似于在 C# 中使用的配置文件的扩展方法

java - 添加/删除元素时创建新数组?

JAVA:在多列上对 ArrayList<ArrayList<Integer>> 进行排序

java - 正在绘制的盒内盒的数量为 N

python - 从类方法访问类名

javascript - 方法如何针对 JavaScript 对象执行

java - 如何删除 java.lang.IndexOutOfBoundsException?