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