簡體   English   中英

Python位掩碼沒有給出預期的輸出

[英]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 代碼:

用於讀取修改寫入的 Python 函數

錯誤在於您創建反轉掩碼的方式。

您將其作為字符串操作執行,並使用int將字符串轉換回整數。 您忘記指定base=2並且字符串被視為十進制數。

反轉 32 位值的正確方法是:

MASK32 = 2**32-1

invx = ~x & MASK32

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM