我正在运行一个 python 脚本,我正在计算以下内容:t - 2 ** (j - 1) * l其中t = 302536, j = 6, l = 0.这让我返回302536( t),我无法理解如何。在我看来,结果应该是302535(t - 1)。2 ** (j - 1) * l结果为 0,根据我的说法,结果为 1,(j - 1) * l结果为 0。这是如何计算的?
1 回答
智慧大石
TA贡献1946条经验 获得超3个赞
唯一比 power 绑定更紧密的是括号。Python(以及我见过的所有其他原生支持幂运算符的语言)都遵循这一算法约定,因此您无需记住不同的冲突规则集。您的操作可以显式重写如下:
t - ((2 ** (j - 1)) * l)
正如您所指出的,设置l = 0会丢弃大部分计算。只是它抛弃了除t自己以外的一切。
您可以通过使用幂运算符的函数形式使这些事情变得明确。以下任何导入都适用于以下示例:
from math import pow
from operator import pow
from operator import __pow__ as pow
from numpy import pow
看起来你想要/期望
t - pow(2, (j - 1) * l)
而是得到了
t - pow(2, j - 1) * l
添加回答
举报
0/150
提交
取消