【问题标题】:Python bitmask doesn't give expected outputPython位掩码没有给出预期的输出
【发布时间】:2020-04-01 10:04:25
【问题描述】:

我在寄存器读取值上放置一个位掩码并对该值执行逻辑与。 我期望的是: 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 function for read modify write

【问题讨论】:

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

标签: python bitwise-operators cocotb


【解决方案1】:

错误在于您创建反转蒙版的方式。

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

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

MASK32 = 2**32-1

invx = ~x & MASK32

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多