Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ASM/C和x2B之间的差异+;当NEG不带符号1时_Python - Fatal编程技术网

Python ASM/C和x2B之间的差异+;当NEG不带符号1时

Python ASM/C和x2B之间的差异+;当NEG不带符号1时,python,Python,我最近偶然发现了一个仅在Python中出现的错误。 对无符号1求反不等于FFFFFF 在汇编程序中: MOV(eax, 0x1) NEG(eax) 结果是0xFFFFFF C中的结果相同++ 但是,在Python中: import numpy as np print(hex(~np.uint32(1))) 结果是0xFFFFFE 这里我遗漏了什么?在two的补码算法中,求反需要对一个数字进行位反转(这就是~所做的)并向其添加一个 print(hex(~np.uint32(1) + 1))

我最近偶然发现了一个仅在Python中出现的错误。
对无符号1求反不等于FFFFFF

在汇编程序中:

MOV(eax, 0x1)
NEG(eax)
结果是0xFFFFFF

C中的结果相同++

但是,在Python中:

import numpy as np
print(hex(~np.uint32(1)))
结果是0xFFFFFE


这里我遗漏了什么?

在two的补码算法中,求反需要对一个数字进行位反转(这就是
~
所做的)并向其添加一个

print(hex(~np.uint32(1) + 1))
或者可以使用Python的否定运算符:

print(hex(-np.uint32(1)))

但是,
~
不是求反运算符,而是按位求逆。这不是维基上说的~x返回x的补码-通过将每个1换成0,每个0换成1得到的数字。这是另一种解释相同事情的方法,同样,你也可以说
~x
-1-x
,所以你说在Python中~n=-n-1,而在C中是~n=-n?@不,在C中不是~n=-n。阅读更多关于。NEG指令与位反转不同。