-1

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

4

1 回答 1

2

错误在于您创建倒置蒙版的方式。

您将其作为字符串操作执行,并使用 . 将字符串转换回整数int。您忘记指定base=2,字符串被视为十进制数。

反转 32 位值的正确方法是:

MASK32 = 2**32-1

invx = ~x & MASK32
于 2020-04-01T10:41:36.323 回答