typedef unsigned int StatusCode;
StatusCode quality = 0;
#define PARTIALBIT 0x05
quality |= PARTIALBIT ;// I am setting a partial bit here
// ....
在代码的其他部分,我必须检查是否设置了部分位,我必须清除它。 我如何在C中实现这一目标?
谢谢!
答案 0 :(得分:4)
试试这个:
if (quality & PARTIALBIT)
{
// bit was set, do processing
// ...
// then clear the bit
quality &= ~PARTIALBIT;
}
另外,如果你必须设置第5位,那么你就错了。如果要设置第5位,请使用:
#define PARTIALBIT (1 << 5)
代替。
答案 1 :(得分:3)
如果你想设置一个位x,你可以写:
val |= 1<<x
如果你想清除一点x,你可以:
val &= ~(1<<x)
如果你想反转一下x,你写:
val ^= 1<<x
答案 2 :(得分:0)
替代方案 - 在'unsigned int StatusCode'上使用位域联合:
typedef union{
unsigned intStatus;
unsigned bitStatus:sizeof(unsigned);
} S_statusCode;