Python NOR 返回奇数
Python NOR Returning Odd Values
我正在尝试获取 2 个值的 NOR
a = 0b1010
b = 0b0101
print(~ (a | b))
当前输出是-16
,但如果我手动执行此操作
1010
OR 0101
--------
1111
NOT 1111
--------
0000
所以,这应该给出 0
的值,而不是 -16
。为什么要这样做?我该如何解决这个问题?
这些操作是用 32 位整数(或 64 位版本 Python 中的 64 位整数)完成的。
0000 0000 0000 0000 0000 0000 0000 1010
OR 0000 0000 0000 0000 0000 0000 0000 0101
------------------------------------------
0000 0000 0000 0000 0000 0000 0000 1111
NOT 0000 0000 0000 0000 0000 0000 0000 1111
-------------------------------------------
1111 1111 1111 1111 1111 1111 1111 0000
作为有符号整数,它是 -16 的二进制补码表示,因为您必须加 16 才能达到零(和进位)。
要修复它,请使用 0b1111
显式异或,而不是使用 ~
。
print((a | b) ^ 0b1111)
我正在尝试获取 2 个值的 NOR
a = 0b1010
b = 0b0101
print(~ (a | b))
当前输出是-16
,但如果我手动执行此操作
1010
OR 0101
--------
1111
NOT 1111
--------
0000
所以,这应该给出 0
的值,而不是 -16
。为什么要这样做?我该如何解决这个问题?
这些操作是用 32 位整数(或 64 位版本 Python 中的 64 位整数)完成的。
0000 0000 0000 0000 0000 0000 0000 1010
OR 0000 0000 0000 0000 0000 0000 0000 0101
------------------------------------------
0000 0000 0000 0000 0000 0000 0000 1111
NOT 0000 0000 0000 0000 0000 0000 0000 1111
-------------------------------------------
1111 1111 1111 1111 1111 1111 1111 0000
作为有符号整数,它是 -16 的二进制补码表示,因为您必须加 16 才能达到零(和进位)。
要修复它,请使用 0b1111
显式异或,而不是使用 ~
。
print((a | b) ^ 0b1111)