Python math 模块中的 log2
为什么这个东西不存在呢?
import math
[x for x in dir(math) if 'log' in x]
>>> ['log', 'log10', 'log1p']
我知道我可以用 log(x,2) 来计算,但 log2 这个写法真的很常见,所以我有点困惑。
哦,看起来这个只在 C99 版本中有定义,而在 C90 版本中没有,我想这就回答了我的问题。不过还是觉得有点奇怪。
3 个回答
0
对于任何晚到的人来说,Python 3.3及以后的版本有一个叫math.log2的函数。这个函数通常比用log(x, 2)或者log(x)/log(2)的方式更准确。我猜是这样。此外,还有一个int.bit_length()的方法。
6
我不太确定你想要的是什么,但可以说:
-- 从数学的角度来看,你可以用 math.log(x)/math.log(2) 来计算。
-- 如果输入的 X 是整数类型,并且你想要的是四舍五入后的整数结果,那么你可以用右移操作来更快地实现。这种方法使用 SHR 命令,不需要像 libc 的 log() 函数那样复杂的泰勒级数和局部插值。