Python 位掩码不提供预期的输出



我将一个位掩码放在寄存器读取值上,并对该值执行逻辑和。我期望的是: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

相关内容

  • 没有找到相关文章

最新更新