c++ - (1U << X) 有什么作用?

标签 c++

我找到了这段代码:

enum 
{
  IsDynamic = (1U << 0),  // ...
  IsSharable = (1U << 1), // ...
  IsStrong = (1U << 2)    // ...
};

(1U << X) 是什么意思?怎么办?

最佳答案

它设置位掩码:

1U << 0 = 1
1U << 1 = 2
1U << 2 = 4
etc...

发生的情况是 1U(无符号值 1)向左移动 x 位。

您发布的代码相当于:

enum 
{
      IsDynamic = 1U,  // binary: 00000000000000000000000000000001
      IsSharable = 2U, // binary: 00000000000000000000000000000010
      IsStrong = 4U    // binary: 00000000000000000000000000000100
}

关于c++ - (1U << X) 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2128442/

相关文章:

c++ - 动态调整组合框的宽度,以便显示整个字符串

c++ - 确实应该关闭的文件共享违规

c++ - 在函数重载中使用标签

C++ 正在混合我的字符串?

c++ - OpenCV-如何将RGB图像投影到日志(R/G)〜日志(B/G)空间?

c++ - 为什么 std::setprecision 显示不存在的精度位以及如何查看真正的 float

c++ - 如何在编译时生成嵌套循环

c++ - 为什么我的 for 循环给出错误 : X does not name a type

c++ - 中的复数

c++ - 具有多个值的无序映射