最小整数值大于或等于log的值

时间:2014-05-09 11:46:38

标签: python int logarithm

我有一些整数计数假设' 51'我想用二进制数代表那么多的整数。在这里,我需要log(51),所以我得到一些浮动值为3.93182563272。但是我希望它以某种整数格式4,它可以用来表示51个整数。 日志值可以计算为

import math
math.log(51)

2 个答案:

答案 0 :(得分:2)

如果你想要二进制数字的数量,那就是基数2,而math.log默认返回自然对数(基数e)。第二个参数可用于指定替代基础。然后,您可以使用math.ceil对数字进行舍入。

math.ceil(math.log(51, 2))
6.0

你没有指定python版本但是如果你有python 3,(感谢@delnan),你可以使用math.log2代替,这应该更准确:

math.ceil(math.log2(51))
6.0

numpy also has a log2 method(但这个应用程序可能有点过分了。)

math.ceil实际上返回一个浮点数,所以如果你想要一个整数,你可以将表达式包装在int中:

int(math.ceil(math.log(51, 2)))
6

顺便说一下,您还可以查看函数bin。它返回一个包含整数的二进制表示的字符串:

bin(51)
'0b110011'

...但是如果你不想搞砸任何一个(再次感谢@delnan),你可以改用bit_length代替:

(51).bit_length()    
6

答案 1 :(得分:0)

你可以使用天花板"向上"在将它强制转换为int之前的函数:

math.ceil(math.log(51)) # round up

您还应该看看:

math.floor() # round down
math.round()

如果需要将其保存为整数类型,可以将其转换为该类型:

int()