Mat*_*wat 3 c bit bitwise-operators logical-operators
我想检查数字是否将所有偶数或奇数位设置为1并且仅将它们设置为1.例如:
数字42是正确的,因为在二进制代码中101010它具有全部且仅偶数位设置为1.数字21也是正确的10101.
编号69为如.1000101是不正确的,因为只有三个奇数位组1.
我尝试过使用不同的操作,但^, &, >>, <<我仍然不知道如何使用这些操作符来完成此操作.是的,我需要使用逻辑运算符来执行此操作C.
这些数字具有(x ^ (x >> 1)) + 12的幂的属性.如果y是2的幂y & (y - 1) == 0
因此,一个测试可以((x ^ (x >> 1)) + 1) & (x ^ (x >> 1)) == 0适用于任何大小的数字.