python - 不确定 'and' 操作

标签 python operands

我遇到了一段代码来计算十进制所需的二进制位数。

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/

相关文章:

python - Django Form 不从类 HomeForm 渲染 HTML

python - 如何在 if 指令中处理 SQL 选择中的 none

python - 将链接发布到我自己的 Pocket 帐户时,如何授权从 Python 脚本调用 Pocket API?

c# - 有人可以解释一下这个算法会发生什么来检查它是否是泛数字的吗?

python - 我什么时候会在 monogoengine 的内置 JSON 序列化(from_json 和 to_json)上使用像 marshmallow 这样的外部序列化器?

Python 图像处理 : Measuring Layer Widths from Electron Micrograph

types - 在 Swift 中将有符号转换为无符号

objective-c - '==' 的左操作数是垃圾值

C++ 无效的操作数和类型

PHP 变量计算不正确