美文网首页
[Utils] 快速计算任意自然数附近的2的n次方数

[Utils] 快速计算任意自然数附近的2的n次方数

作者: Cocoonshu | 来源:发表于2017-09-28 23:38 被阅读94次

因为计算的计算是基于二进制的,所以很多优化运行都离不开2的n次方这个计算。比如文件系统扇区尺寸,GPU执行图像运算时的图像尺寸……

那如何快速找到离自然数A最近的一个2^n数?
介绍一个巧妙又快速的方法,见下文:

public static int nextPowerOf2(int num) {
    if (num <= 0 || num > (1 << 30)) {
        throw new IllegalArgumentException();
    }

    num -= 1;
    num |= num >> 16;
    num |= num >> 8;
    num |= num >> 4;
    num |= num >> 2;
    num |= num >> 1;
    return num + 1;
}

测试的结果如下:

nextPowerOf2(10) -> 8
nextPowerOf2(30) -> 32
nextPowerOf2(99) -> 128
nextPowerOf2(256) -> 256

相关文章

  • [Utils] 快速计算任意自然数附近的2的n次方数

    因为计算的计算是基于二进制的,所以很多优化运行都离不开2的n次方这个计算。比如文件系统扇区尺寸,GPU执行图像运算...

  • (́安◞౪◟排‵)

    1.计算2的n次幂,n可输入,n为自然数 var n=parseint(window.prompt(“input”...

  • JS补充8

    1.计算2的n次幂,n可输入,n为自然数。 var n=parseInt( window. prompt(“inp...

  • 2018.7.13

    课上留得作业 1.计算2的n次幂,n可输入,n为自然数 var n=parseint(window.prompt(...

  • 斐波那契数列 logn 实现

    对于fibonacci: logn主要是基于计算一个数的n次方的方法。 计算一个数的n次方的方法: 递归方式计算乘...

  • 3课上作业

    1.计算2的n次幂,n可输入,n为自然数。 2.计算n的阶乘,n可输入。 3.著名的斐波那契额数列1 1 2 3 ...

  • 【算法】猫扑素数

    求自然数n内所有猫扑素数 猫扑数:指以2开头,后面跟任意个3的十进制数。如:2、23、233等。 素数(质数):在...

  • 四-1 逻辑练习题

    1. 计算2的n次幂,n可输入,n为自然数 n个2相乘 原思路关键代码: var s = 0; for( var...

  • 1002写出这个数

    读入一个正整数n,计算其各个数字之和,用汉语拼音写出和的每一位数字。输入格式:保证自然数n小于10的100次方。输...

  • Swift - 计算次方(2的N次方,2的随机次方)

    1、使用<<计算2的N次方

网友评论

      本文标题:[Utils] 快速计算任意自然数附近的2的n次方数

      本文链接:https://www.haomeiwen.com/subject/oxlbextx.html