C++:(a<<b) 是什么意思?

标签 c++ operators

我有一个包含以下定义的 C++ 头文件:

#define CACHE_NUM_WAYS    (1<<1)
#define CACHE_DATA_SIZE   (1<<8)

在其余代码中用作整数。

这是什么意思?它的值(value)是什么?

最佳答案

1 << 1 表示:

00000000 00000001 changes to 00000000 00000010

1 << 8 表示:

00000000 00000001 changes to 00000001 00000000

这是一个位移操作。对于右侧的每个 1,您可以将自己视为将左侧的值乘以 2。因此,2 << 1 = 4 和 2 << 2 = 8。这比 1 * 2 更有效。

另外,你可以做 4 >> 1 = 2(和 5 >> 1 = 2,因为你向下舍入)作为逆运算。

关于C++:(a<<b) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10983078/

相关文章:

C++ 使用来自另一个标识符下的头文件的包含类

c++ - 在 TreeView C++ BUILDER 中突出显示项目

c++ - 为什么使用 thread_local 会崩溃?

c++ - 从 boost::signals2 安全断开连接

c++ - Cereal 不支持原始指针

ruby - ||=(或等于)在 Ruby 中是什么意思?

.net - VB.net 函数中是否有任何 IN 运算符,如 SQL 中的运算符

c++ - 可以使用 "and"、 "or"等代替 "&&"、 "||"吗?

c - 为什么我不能在 C 中仅使用 1 个相等运算符来检查多个条件?

C# LINQ Orderby - 真/假如何影响 orderby?