首页 > 试题广场 >

请选一个表达式,用于判断一个INT32整数n不是2的幂。该表

[单选题]
请选一个表达式,用于判断一个INT32整数n不是2的幂。该表达式在n是2的幂的时候返回true,其他时候返回false。
  • (n&(n-1))==0
  • (n&(n+1))==0
  • n%2==0
  • (n&(n+1))%2==0
推荐
A

最高位是1,其他位全是0的数就是2的幂,保证低位全是0的条件是A
编辑于 2015-02-02 21:37:51 回复(1)
n如果是2的幂,举个例子(16这个数的二进制):10000。
那么n-1(15这个数)就是:01111。
两者相与就是00000。
发表于 2018-03-24 13:05:37 回复(0)
A 举个例子:只要是2的幂的话就假设: 00001000 这表示一个8位的二进制数(十进制为8),当n-1时
二进制为: 00000111,与 n进行 与 运算得0。
发表于 2015-05-26 08:45:14 回复(0)
 如果一个数是2的k次方,那么这个数用二进制表示时其最高位为1,其余位为0,n&(n-1)相与结果使得n的二进制表示中最右边的1变为0,因此如果n是2的整数次幂,则有A成立,注意A中运算符的优先级。
发表于 2016-06-19 10:16:20 回复(0)
i & (i - 1)  作用:去掉i的二进制中最后一个1,既然是幂次,那结果自然选A
发表于 2019-09-11 16:56:23 回复(0)
举个例子,比如a=2时,只有A对
发表于 2017-05-01 15:17:44 回复(0)
a 归纳一下就好
发表于 2017-04-10 15:33:23 回复(0)
模运算,选C
发表于 2018-01-25 21:48:23 回复(1)
举例6和8
发表于 2015-07-14 22:20:19 回复(0)
A 保证低位为0
发表于 2015-04-02 13:12:27 回复(0)