指数运算符 ** 在 Python 中的工作

我正在运行一个 python 脚本,我正在计算以下内容:

t - 2 ** (j - 1) * l

其中t = 302536j = 6l = 0.

这让我返回302536t),我无法理解如何。在我看来,结果应该是302535t - 1)。

2 ** (j - 1) * l结果为 0,根据我的说法,结果为 1,(j - 1) * l结果为 0。

这是如何计算的?


Cats萌萌
浏览 152回答 1
1回答

智慧大石

唯一比 power 绑定更紧密的是括号。Python(以及我见过的所有其他原生支持幂运算符的语言)都遵循这一算法约定,因此您无需记住不同的冲突规则集。您的操作可以显式重写如下:t - ((2 ** (j - 1)) * l)正如您所指出的,设置l = 0会丢弃大部分计算。只是它抛弃了除t自己以外的一切。您可以通过使用幂运算符的函数形式使这些事情变得明确。以下任何导入都适用于以下示例:from math import powfrom operator import powfrom operator import __pow__ as powfrom numpy import pow看起来你想要/期望t - pow(2, (j - 1) * l)而是得到了t - pow(2, j - 1) * l
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python