我遇到了一段代码来计算十进制所需的二进制位数。
nbits = 1 + (decimal and floor(log2(decimal)))
我明白 1+floor(log2(decimal))
返回 nbits
的数量.但是我不确定
and
是什么声明确保这里。
最佳答案
它利用了 0
的事实是假值;这是一种紧凑的形式
bits = 1 + (0 if decimal == 0 else floor(log2(decimal)))
甚至不那么紧凑,if decimal == 0:
bits = 1 # 1 + 0
else:
bits = 1 + floor(log2(decimal)))
floor(log2(0))
未定义,因此您需要处理 decimal == 0
特别。x and y == y
对于 x
的任何真值, 和 x and y == x
(根本不评估 y
)为假值。简而言之,它说
bits
至少为 1 位( 0
),但对于非零值可能需要额外的位。
关于python - 不确定 'and' 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69528913/