5 位有符号二进制到 int
5-bit signed binary to int
我的代码必须读取 5 位有符号二进制值。假设它读取 11111
,这将是二进制补码 -1
。但是 int("0b11111", 2)
returns 31
相反。
如何解析正确的值?
这是一个可能的解决方案,用于测试您未来的模拟器的所有 5 位长度的二进制数:
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))
我的代码必须读取 5 位有符号二进制值。假设它读取 11111
,这将是二进制补码 -1
。但是 int("0b11111", 2)
returns 31
相反。
如何解析正确的值?
这是一个可能的解决方案,用于测试您未来的模拟器的所有 5 位长度的二进制数:
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))