在不移位或屏蔽的情况下验证位状态
操作位时,通常需要检查整数变量中特定位的状态。考虑以下示例:
int temp = 0x5E; // in binary 0b1011110
我们想要确定 temp 的二进制表示形式中的位 3 是否设置为 1 或 0。
内置函数?
问题出现了:是否有一个内置函数可以执行此操作而无需借助位移位和屏蔽?
C 中的自定义宏
在 C 中,没有本机解决方案。但是,您可以创建一个宏来简化该过程:
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
其中 var 是要检查的整数,pos 是位位置(从 0 索引,从最右边的位开始)。
检查从右端算起的第 3 位:
CHECK_BIT(temp, 2)
C 中的 Std::bitset
在 C 中,您可以利用 std::bitset 类:
std::bitset<32> bits(temp); if (bits.test(3)) { // Bit 3 is set }
这里,bits 表示 temp 的二进制表示,bits.test(3) 检查该值第三位的。
以上是如何在不移位或屏蔽的情况下检查位的状态?的详细内容。更多信息请关注PHP中文网其他相关文章!