如何在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
使用位移位很快,并且不会冒内存访问具有缓存未命中的风险。