2024-04-24 09:04:08 发布
网友
我正在运行一个python脚本,其中我正在计算以下内容:
t - 2 ** (j - 1) * l
其中t = 302536,j = 6,l = 0。在
t = 302536
j = 6
l = 0
这返回给我302536(t),我不明白怎么回事。我认为结果应该是302535(t - 1)。在
302536
t
302535
t - 1
2 ** (j - 1) * l结果是0,根据我的说法,它应该是1,因为(j - 1) * l的结果是0。在
2 ** (j - 1) * l
(j - 1) * l
这是怎么计算出来的?在
唯一比幂更紧的是括号。Python(以及我见过的所有其他本机支持幂运算符的语言)在这方面遵循算术约定,因此您不需要记住不同的冲突规则集。可以按如下方式显式重写操作:
t - ((2 ** (j - 1)) * l)
正如您所指出的,设置l = 0会丢弃大部分计算。只是它丢弃了除了t本身之外的所有内容。在
通过使用幂运算符的函数形式,可以使这些事情变得明确。以下任何导入都适用于以下示例:
看来你想要/期望得到
t - pow(2, (j - 1) * l)
但是却得到了
t - pow(2, j - 1) * l
唯一比幂更紧的是括号。Python(以及我见过的所有其他本机支持幂运算符的语言)在这方面遵循算术约定,因此您不需要记住不同的冲突规则集。可以按如下方式显式重写操作:
正如您所指出的,设置
l = 0
会丢弃大部分计算。只是它丢弃了除了t
本身之外的所有内容。在通过使用幂运算符的函数形式,可以使这些事情变得明确。以下任何导入都适用于以下示例:
^{pr2}$看来你想要/期望得到
但是却得到了
相关问题 更多 >
编程相关推荐