为什么在Python3.6中,print(-5^-3)是6?
在Google Colaboratory(其版本为python 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
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