如何测试一个数字是否是 2 的幂?

新手上路,请多包涵

我需要这样的功能:

 // return true if 'n' is a power of 2, e.g.
// is_power_of_2(16) => true
// is_power_of_2(3) => false
bool is_power_of_2(int n);

谁能建议我怎么写这个?

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

阅读 320
1 个回答

在 C++20 中有 std::has_single_bit 如果您不需要自己实现它,您可以将其用于此目的:

 #include <bit>
static_assert(std::has_single_bit(16));
static_assert(!std::has_single_bit(15));

请注意,这要求参数是无符号整数类型。

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

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