python中是否有一个内置函数可以将二进制字符串(例如'111111111111')转换为two's complement integer -1?
最佳答案
二进制补码减去 (1<<bits)
如果最高位是 1。以 8 位为例,这给出的范围是 127 到 -128。
整数补码的函数...
def twos_comp(val, bits):
"""compute the 2's complement of int value val"""
if (val & (1 << (bits - 1))) != 0: # if sign bit is set e.g., 8bit: 128-255
val = val - (1 << bits) # compute negative value
return val # return positive value as is
从二进制字符串开始特别容易...
binary_string = '1111' # or whatever... no '0b' prefix
out = twos_comp(int(binary_string,2), len(binary_string))
对我来说更有用的是十六进制值(本例中为 32 位)...
hex_string = '0xFFFFFFFF' # or whatever... '0x' prefix doesn't matter
out = twos_comp(int(hex_string,16), 32)
关于python - Python中的二进制补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604464/