此代码如何为 32 位整数的任何给定数字 [>1] 找到 2 的下一个最高幂?
n--;
n = n | n>>1;
n = n | n>>2;
n = n | n>>4;
n = n | n>>8;
n = n | n>>16;
n++;
最佳答案
移位和按位或的序列保证了一个由所有 1
组成的数字,它比 2 的幂小一。加 1 得到 2 的幂。
初始减 1 是为了使其适用于已经是 2 的幂的 n
值。
(显然,如果 n
最初是 0
,则此代码不起作用。)
关于c - 此代码如何为任何给定数字找到 2 的下一个最高幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11084367/