【发布时间】:2013-12-12 13:10:50
【问题描述】:
您好,我正在尝试找出一个函数,其中给定列表 [x1, x2... xn] 的长度 n,基数为 2 的数字系统需要多少位才能为每个系统分配唯一代码列表中的值。
例如,一个数字可以包含两个唯一值:
x1 0
x2 1
两位数可以容纳四位:
x1 00
x2 01
x3 10
x4 11
等等。我正在尝试编写一个 python 函数 calcBitDigits(myListLength) ,它采用这个列表长度并返回所需的位数。 calcBitDigits(2) = 1,calcBitDigits(4) = 2,calcBitDigits(3) = 2,等等。
【问题讨论】:
-
您正在寻找的是数学函数 log base 2(向上取整)。你可以找到一堆不同的数学库来为你做这件事。
-
x = int(log(n,2))+1- 这将为您提供所需的位数。 -
@Mr.Polywhirl:注意
math.log有一个可选的base参数。 -
@Warren 抱歉,我想保证安全。上周我使用了大约 5 种语言……我应该检查一下文档。