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

新手上路,请多包涵

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

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

它在其余代码中用作整数。

这是什么意思?它的价值是什么?

原文由 itamar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 643
2 个回答

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 因为您向下舍入)作为逆运算。

原文由 John Humphreys 发布,翻译遵循 CC BY-SA 3.0 许可协议

a<<b 表示 (a * pow(2,b))-> a * 2^b // 左筛选运算符 <<

a>>b 表示 (a / pow(2,b))-> a / 2^b // 右筛选运算符 >>

原文由 Rishi Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题