如何评估输入参数是否将所有偶数位设置为1?

Dea*_*hIt 0 c logic bit-manipulation

我试图在C中进行一些逻辑操作但是卡住了.我需要编写一个函数,给定一个输入参数,它将评估我的参数是否将所有偶数位设置为1.例如:

myFunction (0xFFFFFFFE) = 0;
myFunction (0x55555555) = 1;
Run Code Online (Sandbox Code Playgroud)

我被允许使用的运营商是:! ~ & ^ | + << >>.我不能使用if语句,循环或相等检查(所以没有==!=运算符).

Pau*_*l R 6

您需要使用掩码测试该值,并且在不使用的情况下如何测试相等性会有点狡猾==,例如:

return !((n & 0x55555555) ^ 0x55555555);
Run Code Online (Sandbox Code Playgroud)

注意:这假定为32位值.

  • @Aniket:是的,这就是为什么你的解决方案不起作用的原因. (2认同)
  • @Jack真正的程序员从零开始索引.:P (2认同)