【发布时间】:2021-10-06 23:30:56
【问题描述】:
这是为什么
>>> print(f"{-5 & 0b1111: 04b}")
1011
然而,
>>> print(f"{-5 | 0b0000: 04b}")
-101
此外,
>>> print(f"{-5 | 0b1111: 04b}")
-001
看来,首先 -5 被转换为 2 的补码,然后执行操作。然后,在“&”的情况下,输出被打印/解释为这样,但对于|,输出被转换回有符号的幅度表示。为什么会有这样的不对称?
【问题讨论】:
-
&去掉了符号位,但|没有,所以这两个表达式的结果是不同的。 IMO 整个 Python 显示负二进制数的方式很奇怪。
标签: python binary representation