有符号十进制到二进制



如何在Python中将有符号十进制整数转换为16位二进制?Bin()函数非常基本,只是添加了一个"-">

我的要求是:假设我们有一个数字-4,那么输出应该是1000000000000100。即MSB为符号位,其余为幅度位。

我已经尝试了常见的掩蔽技术,但它在有效位中给出了2的补和1的扩展。例如:print(bin(-7 &0 b1111111111111111) .replace("0 b","))输出:1111111111111001

通过format加前导零,然后按正负顺序加符号位:

>>> def to_bin(val):
...     b = bin(val).split('b')[1][-15:]
...     p = '0' if val >= 0 else '1'
...     return p + format(b, '>015')
...
>>> to_bin(-7)
'1000000000000111'
>>> to_bin(-4)
'1000000000000100'
>>> to_bin(4)
'0000000000000100'
>>> to_bin(2 ** 16)    # overflow
'0000000000000000'
>>> to_bin(2 ** 16 - 1)
'0111111111111111'

相关内容

  • 没有找到相关文章

最新更新