使用给定的按位运算符重现函数

问题描述 投票:-1回答:1

我有一个非常类似于此处Checking bits of ints to see if they share binary with the power of 2 (bitwise only)的问题,但是坦率地说,这个问题的措辞很差(因此我不确定它们的相似程度如何,答案也没有太多解释。

试图复制此功能:

    int testdl4(int x) {
       int i;
       for (i = 1; i < 32; i+=2)
           if ((x & (1<<i)) == 0)
              return 0;
       return 1; 
    }

仅使用以下按位运算符:!,〜,&,^,|,+,<>(均不表示循环或if语句)。

上述链接的答案(我认为是相同的问题,但是循环从0开始):

返回!((x&0x55555555)^ 0x55555555);

而且我认为需要更换口罩才能正常工作,但我不确定2。

有人可以解决并解释推理吗?

c bit-manipulation bitwise-operators
1个回答
1
投票

让我们首先用英语写出代码的实际作用:

© www.soinside.com 2019 - 2024. All rights reserved.