首页 > 试题广场 >

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

[单选题]
(判断题)对于整数 n,(n & (n-1) ) == 0 的含义是判断 n 是否为偶数。
  • 正确
  • 错误
要判断奇偶数, 直接用二进制最后一位去比较就可以.
if(n & 1) cout << "奇数" << endl; else cout << "偶数" << endl;

n & (n-1)  的作用是把n的最低位1设置为0; 
 XXX10000 -> XXX00000
所以这个表达式(n & (n-1) ) == 0 可以用来判断n是否是0 或者2的整数倍.
编辑于 2019-04-10 19:51:37 回复(9)
n & (n-1) 是将n的二进制形式,最右端的1置0。 因此表达式 ( n & (n-1) ) == 0  的作用是判断,n 的二进制bit位中1的个数是否为1或0,也就是判断n是否为0或2的非负整数幂 。
发表于 2021-05-31 15:45:41 回复(0)
这个&有0则0,-1操作正好各项转变01,为什么不能判断奇数偶数,真是奇了怪了.
发表于 2021-02-24 10:30:31 回复(5)
这是判断 n 是否是 2 的整数次幂
假设 n 的二进制形式有 m1 个 1
n - 1 的二进制形式有 m2 个 1
容易知道 m1 != m2
根据按位与运算的特性,如果(n & (n-1) ) == 0
则 n 的 m1 个  1 与 (n-1)的 m2个 1 完全没有重叠!
这样的 n 应该满足什么性质呢?
如果 (n-1)可以写成十进制下的 2m - 1, 那么n就是 十进制下的2m
这样的话,n 的二进制表示就与 n-1的二进制表示在1的位置这一方面完全没有重合!
可以想到,除了这种情况以外,其他的都不行
发表于 2022-09-15 00:38:11 回复(1)
若是1&(1-1),结果是0,不能证明1是偶数
发表于 2022-04-01 14:31:20 回复(0)
这里的&是什么运算符啊 求指点
发表于 2020-12-24 19:59:09 回复(2)
按位与运算,例如:n=7,二进制为0111,(n-1)=6,二进制为0110。 则与运算为: 0111 & 0110 = 0110,可以看出是最后一位减一运算。故它的作用为一个作用是可以用来统计一个数1的个数,也可以用于判断一个数据是否为2的幂。判断1的个数while(n&(n-1))方式统计次数,判断是否为2的幂则直接判断n&(n-1)是否==0,等于0则是否则不是。因为2的幂二进制数只会包含一个1.
发表于 2020-10-27 18:10:41 回复(0)
2非负整数幂不一定是偶数(例如:1),偶数也不一定是2的非负整数幂(例如:-2、6)。

编辑于 2022-02-08 18:52:20 回复(0)
n & (n - 1) 会把 n的二进制表示里的最后一位1变成0,所以  n & (n - 1) == 0 的意思是,n 的二进制表示里是否只有1位是1
发表于 2021-08-15 13:08:43 回复(0)
这道题得仔细一点 除了特例“n=1”之外 这道题的说法就是正确的。
发表于 2020-09-02 15:51:03 回复(0)
6&(6-1)
发表于 2023-08-27 18:13:14 回复(0)
把数带进去算就行了
发表于 2022-07-28 13:09:23 回复(0)
特例1
发表于 2021-10-12 08:29:17 回复(0)
发表于 2021-03-29 22:03:26 回复(0)
特例0
发表于 2021-03-19 11:32:05 回复(0)
B
发表于 2021-03-10 09:38:28 回复(0)
<p>n取1就不成立,故选F</p>
发表于 2020-10-30 10:54:50 回复(0)
判断得出的是2的某次方或0
发表于 2019-04-10 21:43:10 回复(0)