为什么在Python3.6中,print(-5^-3)是6?

为什么在Python3.6中,print(-5^-3)是6?,python,python-3.6,Python,Python 3.6,在Google Colaboratory(其版本为python 3.6)的笔记本中,通过放置以下语法-print(-5^-3),我得到的结果是6。我想知道为什么会得到这个结果,以及python如何解释它 Edit:这个问题不是另一个问题的翻版,因为这个问题只是对按位异或运算的一般解释,并没有解释按位运算如何处理负数(在python中) 负数是用前导数字而不是前导数字写的 零。所以,如果你只使用8位作为你的二补 数字,然后将从00000000到01111111的模式视为 从0到127的整数,保留1

在Google Colaboratory(其版本为python 3.6)的笔记本中,通过放置以下语法-
print(-5^-3)
,我得到的结果是
6
。我想知道为什么会得到这个结果,以及python如何解释它

Edit:这个问题不是另一个问题的翻版,因为这个问题只是对按位异或运算的一般解释,并没有解释按位运算如何处理负数(在python中)

负数是用前导数字而不是前导数字写的 零。所以,如果你只使用8位作为你的二补 数字,然后将从
00000000
01111111
的模式视为 从0到127的整数,保留
1xxxxxxx
用于写入 负数。()


说明: 语句
print(-5^-3)
基本上将执行-5和-3的按位异或操作并打印其结果。让我们看看这两个数字的二进制表示

-5的二进制表示可以看作是
1000…101
,而-3的二进制表示可以看作是
1000…011
。此处,MSB(最高有效位)处的
1
表示二进制表示形式表示的数字为负数

因此,只有当两位相反(1和0)时,Xor才会返回1。下面是考虑到数字的8位表示,xor将如何工作

异或运算: 二进制表示法中的
00000110
被视为十进制中的6。因此,打印的答案是6

希望这有帮助

负数是用前导数字而不是前导数字写的 零。所以,如果你只使用8位作为你的二补 数字,然后将从
00000000
01111111
的模式视为 从0到127的整数,保留
1xxxxxxx
用于写入 负数。()


说明: 语句
print(-5^-3)
基本上将执行-5和-3的按位异或操作并打印其结果。让我们看看这两个数字的二进制表示

-5的二进制表示可以看作是
1000…101
,而-3的二进制表示可以看作是
1000…011
。此处,MSB(最高有效位)处的
1
表示二进制表示形式表示的数字为负数

因此,只有当两位相反(1和0)时,Xor才会返回1。下面是考虑到数字的8位表示,xor将如何工作

异或运算: 二进制表示法中的
00000110
被视为十进制中的6。因此,打印的答案是6

希望这有帮助

  -5   :  10000101
 ^ 
  -3   :  10000011
----------------------
Result :  00000110