th比特为零?
这个问题在这里已经有了答案:
您只需用逻辑AND
操作替换逻辑OR
。 你可以使用&
运算符:
pt = pt & ~(1 << i);
你必须反转你的掩码,因为逻辑AND
与1
将保持该位,而0
将清除它...所以你需要在你想清除的位置指定一个0
。 具体来说,做1 << i
会给你一个000...010..000
的掩码,其中1
是在你想要的位的位置, 000...010..000
给出111...101...111
。 逻辑AND
与这将清除你想要的位。
你可以坚持这一点:
// Set bit at position `bitpos` in `pt` to `bitval`
unsigned char bitpos = 1;
unsigned char pt = 0b01100001;
bool bitval = 1;
// Clear the bit
pt &= ~(1u << bitpos);
// Set the bit
pt |= (bitval << bitpos);
链接地址: http://www.djcxy.com/p/28793.html
上一篇: th bit to zero?