c - 这个位操作函数有什么作用?

标签 c bit-manipulation

unsigned long ccNextPOT(unsigned long x){

    x = x - 1;
    x = x | (x >> 1);
    x = x | (x >> 2);
    x = x | (x >> 4);
    x = x | (x >> 8);
    x = x | (x >>16);
    return x + 1;
}

最佳答案

OR 和 SHIFT 语句将 x 最高有效位右侧的所有位填充为 1(最多 32 位)。与预递减和后递增语句一起,它计算(如函数名称所暗示的)下一个等于或大于给定数字的二的幂数(如果x大于0 且小于 2^32)

关于c - 这个位操作函数有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637142/

相关文章:

c - 在 C 中使用结构指针,即使它们没有声明

c - 我的分数计算变量的值异常增加

android - 试图理解 Bitmap.Config.ARBG_8888

c++ - (n&(n-1))==0 和 n&(n-1)==0 在 C++ 中做什么?

c - 如何在 C 中初始化这个二维数组?

无法使用 write 系统调用将整个文件复制到另一个文件

C 程序显示头文件中的函数与 c 文件中定义的函数类型冲突

c# - 在 int 中设置特定位

c - 根据位掩码合并两个位域

algorithm - 基于 IEEE 754 手动将十进制浮点转换为位表示的最简单方法,无需使用任何库