0
typedef unsigned int  StatusCode;

StatusCode quality = 0;

#define PARTIALBIT 0x05

quality |= PARTIALBIT ;// I am setting a partial bit here

// ....

在代码的其他部分,我必须检查是否设置了部分位并且我必须清除它。我如何在 C 中实现这一点?

谢谢!

4

3 回答 3

4

尝试这个:

if (quality & PARTIALBIT)
{
    // bit was set, do processing
    // ...
    // then clear the bit
    quality &= ~PARTIALBIT;
}

此外,如果您必须设置第 5 位,那么您就走错了路。如果要设置第 5 位,请使用:

#define PARTIALBIT (1 << 5)

反而。

于 2012-08-03T10:14:56.327 回答
3

如果你想设置一个位 x,你写:

val |= 1<<x

如果要清除位 x,请执行以下操作:

val &= ~(1<<x)

如果你想反转一点 x,你写:

val ^= 1<<x
于 2012-08-03T10:33:35.257 回答
0

替代方案 - 在“unsigned int StatusCode”上使用位域联合:

typedef union{
  unsigned intStatus;
  unsigned bitStatus:sizeof(unsigned);
} S_statusCode;
于 2012-08-03T11:06:12.583 回答