[英]Python bitmask doesn't give expected output
我在寄存器讀取值上放置了一個位掩碼,並對值執行邏輯和。 我期望的是: clear_reg_val: 00000000000000000100100000000000
我的實際輸出是:
# reg_value is: 00000000000000000100100000001100
# mask_inverted: 11111111111111111111100000000011
# clear_reg_val: 00000000000000000100100000001000
# reg_value is: 00000000000000000100100000001100
# mask_inverted: 11111111111111111111100000000011
# clear_reg_val: 00000000000000000100100000001000
所以我不知道為什么 clear_reg_val 的第 4 位變為 '1' 而不是 '0' 下面的屏幕截圖中添加了該函數的 Python 代碼:
錯誤在於您創建反轉掩碼的方式。
您將其作為字符串操作執行,並使用int
將字符串轉換回整數。 您忘記指定base=2
並且字符串被視為十進制數。
反轉 32 位值的正確方法是:
MASK32 = 2**32-1
invx = ~x & MASK32
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.