为了账号安全,请及时绑定邮箱和手机立即绑定

Python中的二进制补码

Python中的二进制补码

忽然笑 2019-10-18 14:50:49
python中是否有内置函数将二进制字符串(例如“ 111111111111”)转换为二进制补码整数 -1?
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

(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)


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 984 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信