作业帮 > 数学 > 作业

x&(x-1)?"yes":"no" 这句表达式能判断x是否是一个2的幂么?

来源:学生作业帮 编辑:神马作文网作业帮 分类:数学作业 时间:2024/10/02 00:40:28
x&(x-1)?"yes":"no" 这句表达式能判断x是否是一个2的幂么?
要求用一句C表达式测试一个数是否为2的幂,应该怎么写?
“若果都为1,则结果为1,否则为0.” 额,那就是说如果运算得到101,那么结果就是0咯?= =这么诡异的呀.
那这个能证明一下么 为啥x&(x-1)结果的0 1就能判断是否为2的幂呢?
x&(x-1)?
你写的表达式想判断的话还差点就是把后边的yes和no交换位置
即:x&(x-1)?"no":"yes";
位运算这个其实并不难,你听我说几句:
首先来看几个数,这几个数不大,都是10以内的,我们看看它们对应的二进制数是啥
0——0
1——1
2——10
3——11
4——100
5——101
6——110
7——111
8——1000
9——1001
楼主可自己拿7,6,5 试下 肯定结果不是0 因为它们的“位数” 相同
最高位又都是1 所以肯定结果中会有1的存在,结果不可能是0,所以
x&(x-1)?"no":"yes"; 应该取得no
而4,2 它们运算后的结果和8一样,也是0.
综上,表达式x&(x-1)?"no":"yes"; 可以判断x是否是一个2的幂