当前位置:  开发笔记 > 人工智能 > 正文

如何计算最接近2或10的幂是多少?

如何解决《如何计算最接近2或10的幂是多少?》经验,为你挑选了2个好方法。

将2或10的最近功率与另一个数字相结合的最有效方法是什么?例如

对于2的幂,3.5将返回4,对于10的幂,则返回1

对于2的幂,123将返回128,对于10的幂,则返回100

对于2的幂,0.24将返回0.25,对于10的幂,则返回0.1

我只是在寻找算法而不介意语言.



1> Greg Hewgill..:
n^round(log_n(x))

其中log_n是基数n的对数.您可能必须修改round(),具体取决于您如何定义"最近".

请注意,log_n(x)可以实现为:

log_n(x) = log(x) / log(n)

哪里log是任何方便基地的对数.


韦奇:是的,当然.我使用数学符号(在ASCII的范围内)而不是特定的编程语言.

2> Vincent Robe..:

对于整数2的幂,有一个聪明的技巧,包括将最后一位一遍又一遍地复制到右边.然后,你只需增加你的号码,你就有2的力量.

int NextPowerOf2(int n)
{
   n |= (n >> 16);
   n |= (n >> 8);
   n |= (n >> 4);
   n |= (n >> 2);
   n |= (n >> 1);
   ++n;
   return n;
}


请注意,此算法适用于32位.它还将2的幂提升到下一个值(例如,4将给出8).要更改位数,请添加或删除术语,以便第一个术语是您拥有的位数的一半.要保持两位数的幂,只需在开头减去一个.
推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有