gpt4 book ai didi

php - 返回给定整数的下一个最接近的 2 次幂

转载 作者:行者123 更新时间:2023-12-02 06:18:00 28 4
gpt4 key购买 nike

我想写一个函数来返回 2 的下一个幂。因此,如果输入是 18,它将返回 32,这是系列 2、4、8、16、32、64 中下一个大于 18 的数字

如果输入是 40,它将返回 64。

目前我正在使用以下功能:

switch($number) {
case in_array($number, range(0, 2)):
return 2;
break;
case in_array($number, range(3, 4)):
return 4;
break;
case in_array($number, range(5, 8)):
return 8;
break;
case in_array($number, range(9, 16)):
return 16;
break;
case in_array($number, range(17, 32)):
return 32;
break;
}

虽然上面的方法运行良好,但如您所见,它不是一个非常优雅的解决方案并且有其局限性。只是想知道是否有内置的 PHP 函数或更好的方法。

谢谢。

最佳答案

试试这个:

pow(2,ceil(log($number,2)))

一个更有效的:

function next_pow($number)
{
if($number < 2) return 1;
for($i = 0 ; $number > 1 ; $i++)
{
$number = $number >> 1;
}
return 1<<($i+1);
}

关于php - 返回给定整数的下一个最接近的 2 次幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21060859/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com