C/C 检查是否设置了一位,即 int 变量

新手上路,请多包涵
int temp = 0x5E; // in binary 0b1011110.

有没有这样一种方法可以检查 temp 中的第 3 位是 1 还是 0 而无需移位和屏蔽。

只是想知道是否有一些内置功能,或者我是否被迫自己写一个。

原文由 Milan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 612
2 个回答

在C语言中,如果你想隐藏位操作,你可以写一个宏:

 #define CHECK_BIT(var,pos) ((var) & (1<<(pos)))

并以这种方式使用它来检查右端的第 n位:

 CHECK_BIT(temp, n - 1)

在 C++ 中,您可以使用 std::bitset

原文由 mouviciel 发布,翻译遵循 CC BY-SA 4.0 许可协议

快速和最佳的宏

#define get_bit_status()    ( YOUR_VAR  &   ( 1 << BITX ) )

.
.

if (get_rx_pin_status() == ( 1 << BITX ))
{
    do();
}

原文由 mahdi hosseini 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题