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