如何在Java中有效地计算此计算?

来源:爱站网时间:2021-09-23编辑:网友分享
我想执行以下计算,并采用小于32的正整数来获得另一个整数:0 => 0,1 => 1,2 => 2,3 => 4,4 => 8,5 => 16 ,6 => 32,7 => 64,8 => 128,...,31 =>‭...

问题描述


我想实现以下计算,并采用小于32的正整数来获得另一个整数:0 => 0,1 => 1,2 => 2,3 => 4,4 => 8,5 => 16,6 => 32,7 => 64,8 => 128,...,31 =>‭1073741824‬

我可以使用32个位置的整数数组。我还可以使用一个测试值为0的表达式,以返回0,并向左移n-1次(对不起,无法附加代码,编辑器拒绝)。

现在,我正在使用一个静态的整数表,对此感到满意。但是,我想知道是否有一种方法可以通过简单的计算来计算结果,而这种计算的效果可能与访问表一样快?

思路一:


怎么样:

int answer = 0;
if(input == 0)
{
    answer = 0;
}
else
    answer = (int)Math.pow(2, input-1);

如果输入为0,则输出将为0。

如果输入为4,则输出将为2^(4-1) =2^3= 8

思路二:


怎么样:

if (input == 0) {
    return 0;
} else
    return 1 

使用位移位很快,并且不会冒内存访问具有缓存未命中的风险。

上一篇:右键单击时不打开库存

下一篇:如何从“无时区的时间戳”字段收集到无时区的Java时间戳

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载