当前位置: 首页 > 面试题库 >

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

羊舌和安
2023-03-14
问题内容

在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,因此不等于零。瞧



 类似资料:
  • 在CodeReview上,我发布了一段工作代码,并要求提供改进它的技巧。我得到的一个方法是使用布尔方法检查ArrayList是否有偶数个索引(这是必需的)。这是建议的守则: 因为我已经缠着那个特定的用户寻求了很多帮助,所以我决定是时候缠着SO社区了!我真的不明白这是怎么回事。调用该方法并将ArrayList的大小作为参数(即ArrayList有十个元素,编号=10)。 我知道一个单独的同时运行数字

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

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

  • 问题内容: 我们都知道,柔性属性是一个速记,和属性。其默认值为。它的意思是: 但我注意到,在很多地方都使用过。是速记还是?我不明白这是什么意思?我在谷歌搜索中找不到任何东西。 问题答案: 这里是解释: flex: 等同于flex:10。使flex项目具有弹性,并将flex基础设置为零,从而使该项目接收flex容器中指定比例的可用空间。如果flex容器中的所有项目都使用此模式,则它们的大小将与指定的

  • 问题内容: 通过阅读Backbone.js源代码,我看到了以下内容: 什么啊 在这里使用它的目的是什么? 问题答案: 什么意思 [MDN]是带一个参数且始终返回的前缀关键字。 例子 有什么意义呢? 似乎很没用,不是吗?如果它总是返回,那么仅使用自身又有什么问题呢? 在理想的世界中,我们将能够安全地使用它:它比更加简单易懂。但是,如果您以前从未注意到过,这不是一个完美的世界,尤其是在涉及Javasc