如何实现用于检查第n位是否以字节为单位设置的函数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (56)

我想要一个简单的C函数,如果字节中的第n位设置为1。否则它将返回false。

提问于
用户回答回答于

以下函数可以满足您的需要:

int isNthBitSet (unsigned char c, int n) {
    static unsigned char mask[] = {128, 64, 32, 16, 8, 4, 2, 1};
    return ((c & mask[n]) != 0);
}

这假设8位字节(不是C中给定的字节),而零位是最高阶字节。如果这些假设不正确,则简单地归结为展开和/或重新排序mask阵列。

用户回答回答于

只需检查(1 << bit) & byte。如果是非零,则设置位。

扫码关注云+社区

领取腾讯云代金券