Python位掩码没有提供预期的输出

Python位掩码没有提供预期的输出,python,bitwise-operators,cocotb,Python,Bitwise Operators,Cocotb,我将位掩码放在寄存器读取值上,并对该值执行逻辑and。 我所期望的是: 清除注册值:00000000000000000010010000000000 我的实际产出是: # reg_value is: 00000000000000000100100000001100 # mask_inverted: 11111111111111111111100000000011 # clear_reg_val: 00000000000000000100100000001000 # reg_value is:

我将位掩码放在寄存器读取值上,并对该值执行逻辑and。 我所期望的是: 清除注册值:00000000000000000010010000000000 我的实际产出是:

# 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

请把代码贴在这里,截图不行,我以后会做的,现在我的问题已经回答了