5位带符号二进制转换为整型



我的代码必须读取5位有符号二进制值。假设它读到一个11111,它是2的补码-1。但int("0b11111", 2)返回31

如何解析正确的值?

下面是测试未来模拟器中所有5-length二进制数的可能解决方案:

import itertools

def two_complement(value, length):
    if (value & (1 << (length - 1))) != 0:
        value = value - (1 << length)
    return value
opcodes_emulator = ["".join(seq) for seq in itertools.product("01", repeat=5)]
for my_string in opcodes_emulator:
    print my_string, two_complement(int(my_string, 2), len(my_string))

相关内容

  • 没有找到相关文章

最新更新