如何在C++中设置、清除和切换单个位?
大家好!我是一名C++初学者,在处理位时遇到了问题。我需要管理整数中的单个位,但不知道如何正确操作。
我有一个变量 uint8_t flags = 0b00000000;。我想:
- 设置第3位(将其变为1)
- 清除第5位(将其变为0)
- 切换第2位(反转其值)
我尝试写了这样的代码:
uint8_t flags = 0b00000000;
// 设置第3位
flags = flags | 3; // 但这不起作用
// 清除第5位
flags = flags & 5; // 也不对
// 切换第2位
flags = flags ^ 2; // 似乎有效,但我不确定
问题在于我不理解如何正确指定位号。当我写 flags | 3 时,我以为这会设置第3位,但显然不是这样工作的。我读过关于位掩码的内容,但被它们搞糊涂了。
请指教,谢谢。