【发布时间】:2014-12-20 02:07:19
【问题描述】:
def power_of_two?(n)
n & (n-1) == 0
end
此方法检查给定数字 n 是否为 2 的幂。
这是如何运作的?看不懂&的用法
【问题讨论】:
-
我认为这个函数可能会错误地回答 0 是 2 的幂
-
你不明白“&”是做什么的,或者你不明白为什么它应该返回n是否是2的幂?
-
如果 n 是 2 的幂,则此函数确实返回 True。
-
@CarySwoveland 我没有安装 ruby。现在我可以说它确实返回 0 是 2 的幂。0 & -1 => 0
-
这可能是因为 -1 的二进制恭维表示全为 1,而 0 则全为零。所以我们知道:如果 n 是 2 的幂,则函数返回 True。我们知道:如果 n 不是 2 的幂(因为 0 不是 2 的(有限)幂),则函数返回 true。
标签: ruby