【发布时间】:2020-03-07 09:14:30
【问题描述】:
我发现很难考虑 Python(和 Python3)的无限精度负数和按位运算。它不是 32 位或 64 位的。左边的1s 可以认为是“无限多”。它不是很确定,这就是为什么有时很难考虑它是如何工作的。
似乎一种可行的方法是:总是做得更多,例如,如果您正在处理具有 67 位的正整数,那么只需将它们与负数的运算视为具有 96 位或 128 位-少量。这是一个正确的思考方式吗?规范中有什么说明它是如何工作的或应该考虑的吗? (比如内部实现只考虑正整数,只考虑负数为“左多1位”?)
【问题讨论】:
-
好吧,你有没有试过把你的想法编码并检查它在现实中是如何运作的?
-
我有……但我没有看到一个非常明确的规则……我觉得我有时只能猜测
-
所以粘贴你的代码。
-
“规范中有什么说明它是如何工作或应该考虑的吗?” - 有,and it says exactly what you don't want to hear:“按位运算的结果被计算为好像用无限数量的符号位在二进制补码中执行一样。”
-
我认为您应该将此视为一个习惯于思考无穷大的机会。这不是他们唯一一次出现。该技能将很有用。
标签: python python-3.x bit-manipulation negative-number