首页 > 试题广场 >

(判断题)对于整数 n,(n & (...

[单选题]
(判断题)对于整数 n,(n & (n-1) ) == 0 的含义是判断 n 是否为偶数。
  • T
  • F
搬运来自这位大神:borey


思路:初步查看很难一眼分析出表达式是什么含义,我们不妨举例分析一下,假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 = 100 = 4 != 0,下面我们来看更多的例子
5 & 4 = 101 & 100 = 4 6 & 5 = 110 & 101 = 4 7 & 6 = 111 & 110 = 6 8 & 7 = 1000 & 0111 = 0

我们会发现要使表达式等于0,n-1必须使得n的n-1都向高位进1,也就是说满足一下条件:

 x + 1 = n
 x & n = 0

我们来看看有那些数能满足要求:

10 & 01 = 0 -------2^1 100 & 011 = 0 -------2^2 1000 & 0111 = 0 -------2^3 10000 & 01111 = 0 -------2^4 。。。。。。

所谓代码((n & (n-1))== 0)的含义是n满足2的n次方

这种问题一般在于考察分析和解决问题的能力。

发表于 2020-02-18 11:30:52 回复(0)
n > 0 && ((n & (n - 1)) == 0 ) 判断n是否是2的幂。
发表于 2019-04-15 17:05:45 回复(0)
判断n是否为2的偶次幂或者0
发表于 2019-04-10 16:31:29 回复(1)
n&(n-1)作用:将n的二进制表示中的最低位为1的改为0;
因此,n > 0 && ((n & (n - 1)) == 0 )才是判断 n 是否为偶数
发表于 2019-04-11 15:44:38 回复(4)
& :同为1不同为0;
| :同为0不同为1;
发表于 2021-12-22 15:09:32 回复(0)
是按位与&&是与
发表于 2021-09-20 18:59:49 回复(0)

论&与&&的区别。

按位与

需要转换成同一种进制在计算后面得出结果,不是判断偶数。

发表于 2019-10-06 16:21:58 回复(0)
懂了
发表于 2019-08-29 15:21:07 回复(0)

&是按位与


发表于 2019-06-02 00:30:56 回复(0)
这里没有考虑n小于0的情况,n<0时偶数 位与 会得到0x80000000
发表于 2019-04-20 17:28:10 回复(0)