清除C中的特定位为整数

时间:2012-08-03 10:13:15

标签: c

typedef unsigned int  StatusCode;

StatusCode quality = 0;

#define PARTIALBIT 0x05

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

// ....

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

谢谢!

3 个答案:

答案 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;