为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Cats萌萌 2021-08-24 15:37:36
我正在运行一个 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


查看完整回答
反对 回复 2021-08-24
  • 1 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信