Avatar ·

如何在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位,但显然不是这样工作的。我读过关于位掩码的内容,但被它们搞糊涂了。

请指教,谢谢。