[英]Difference between ASM/C++ and Python when NEG unsigned 1
我最近偶然發現了一個僅存在於 Python 中的錯誤。
否定無符號 1 不等於 FFFFFFFF。
在匯編程序中:
MOV(eax, 0x1)
NEG(eax)
結果是 0xffffffff
在 C++ 中的結果相同
然而在 Python 中:
import numpy as np
print(hex(~np.uint32(1)))
結果是 0xfffffffe
我在這里缺少什么?
在二進制補碼算術中,求反需要對一個數進行按位取反(這就是~
所做的)並加一。
print(hex(~np.uint32(1) + 1))
或者您可以使用 Python 的否定運算符:
print(hex(-np.uint32(1)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.