作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
此代码如何为 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/
我是一名优秀的程序员,十分优秀!