我想编写一个函数,返回最接近且大于输入参数的2的幂次方数。例如,如果输入参数是789,则输出应为1024。是否有一种方法可以不使用任何循环,只使用一些位运算符来实现此目的?
相关: 找到大于或等于给定值的最小二次幂的算法 是一个C++问题。C++20引入了std:bit_ceil
,它允许编译器针对目标系统进行最优化处理,但对于大多数CPU具有的位扫描、popcount或其他常见位操作,尚未提供可移植的ISO C等效物。可移植的C代码必须更少效率和/或更复杂。
给定一个整数,如何使用位操作找到下一个最大的二次幂?是一个与语言无关的版本的问题,其中包括一些C++11和17的constexpr
,使用GNU扩展。
回答这个问题不需要可移植性;各种平台的快速版本都是有用的。