当前位置: 首页 > 知识库问答 >
问题:

这个布尔值“(number&1)==0”是什么意思?

酆华皓
2023-03-14

在CodeReview上,我发布了一段工作代码,并要求提供改进它的技巧。我得到的一个方法是使用布尔方法检查ArrayList是否有偶数个索引(这是必需的)。这是建议的守则:

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

因为我已经缠着那个特定的用户寻求了很多帮助,所以我决定是时候缠着SO社区了!我真的不明白这是怎么回事。调用该方法并将ArrayList的大小作为参数(即ArrayList有十个元素,编号=10)。

我知道一个单独的&同时运行数字和1的比较,但是在那之后我就迷路了。

按照我的理解,它是说如果number==01==0返回true。我知道第一个不是真的,后一个显然没有意义。有人能帮我吗?

编辑:我应该补充一下,代码确实可以工作,以防有人想知道。

共有1个答案

壤驷华美
2023-03-14

请记住,“&”是一个按位操作。你可能意识到了这一点,但根据你提出问题的方式,我并不完全清楚。

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

...10110110

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

因此,对上面的内容按位&加上1是:

...10110110 & ...00000001

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

或者,考虑一个奇数。例如,在上面的基础上加上1。然后

...10110111 & ...00000001
 类似资料:
  • 问题内容: 在CodeReview上,我发布了一段有效的代码,并要求改进的技巧。我得到的是使用一种布尔方法来检查ArrayList是否具有偶数个索引(这是必需的)。这是建议的代码: 因为我已经困扰了该特定用户很多帮助,所以我决定是时候该困扰SO社区了!我真的不明白这是如何工作的。调用该方法,并以ArrayList的大小作为参数(即ArrayList有十个元素,数字= 10)。 我知道有一个数字与1

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

  • 当我跑的时候 我在Java中得到错误。为什么?这相当于false==false,这是真的。这不是Java特有的,我在其他语言中也得到了相同的结果。这是因为短路评估吗?似乎左右双方仍会/应该进行比较。

  • 问题内容: login 我已经看过很多次了,但是我不知道那是什么意思。 问题答案: 运算符计算给定表达式,然后返回。 操作者经常被用来仅获取原始值,通常使用“ ”(这是相当于“ ”)。在这些情况下, 可以改用全局变量(假设尚未将其分配给非默认值)。 这里提供了一个解释:operator。 您想要通过链接执行此操作的原因是,通常,URL会将浏览器重定向到评估该JavaScript结果的纯文本版本。但

  • 我运行了几个测试场景,其中我从SOAP客户端调用远程系统的SOA服务,并遇到了各种远程异常。你能帮我确定每个错误意味着什么吗- 1) java.net网站。ConnectException:连接被拒绝“ 2)Java . net . socket time out异常:连接超时" 3) 连接异常: 连接超时”