【问题标题】:C - Return 1 if any even-numbered bit in word x is set to 1C - 如果字 x 中的任何偶数位设置为 1,则返回 1
【发布时间】:2015-12-27 14:02:39
【问题描述】:

我被困在一个函数上,如果仅使用 ! ~ & ^ | + >.

到目前为止,我的掩码为 0x55 (0101),例如,1110 (true) masked 将返回 0100,1010 (false) 将返回 0000。我如何表达答案,以便 true 返回 1 而 false将返回 0? 非常感谢 编辑: 到目前为止,我的代码是:

int anyEven(int x){
   int mask = 0x55;
   return (x&mask);
}

【问题讨论】:

  • 显示你做了什么。
  • if(result > 0) return 1; else return 0;if(result > 0) result = 1; return result;
  • @FiddlingBits 是否有任何其他方式可以通过我上面列出的运算符表达这一点,因为我无法使用 if/else
  • 你的意思是return !!(x & mask);
  • 创建函数bool,写的很好。但是请注意,您只检查低 8 位。没有简单的可移植方法来测试 int 的所有位。

标签: c binary bit bitwise-operators logical-operators


【解决方案1】:
int anyEvenBit(int x) {
    return 0 != (x & 0x55555555); // assuming 32-bit int
}

【讨论】:

    猜你喜欢
    • 2011-06-23
    • 1970-01-01
    • 2019-03-18
    • 2013-12-11
    • 2015-01-18
    • 2023-02-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多