【发布时间】:2021-01-01 07:00:21
【问题描述】:
我试图学习负数的二进制表示。我试图以二进制输出 12 和 ~12。
print(~12)
输出:
-13
这是 12 的 1 的补码。
但我怀疑 二进制 12 是 1100 和 -13(12 的补码)是 0011 但 3 也是 0011二进制。这让我很困惑。
-13 和 3 如何具有相同的二进制值?
【问题讨论】:
-
二进制中的 12 除 4 位和 8 位外全为零。二进制中的
-13是全1,除了那些位。这不是0011。这是11...110011。 -
请注意,
~不是 1 的补码。定义为~x == -(x+1),匹配任意精度2的补码。 -
@S3DEV 否。二进制——作为一个位序列——可以表示任何字面意思。不能保证
10011是偶数,它也可以是 ASCII 字形CR或 UTF-8 字形的前半部分Ꮢ。更进一步,从技术上讲,您必须知道字节和位字节序——10011可能是无符号整数小字节序中的25。 -
很有道理,谢谢。
标签: python binary bit complement ones-complement