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?
