有符号十进制转二进制

老领主9394

如何在 Python 中将有符号十进制整数转换为 16 位二进制?bin() 函数非常基本,只是在数字前添加一个“-”。

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

我尝试了常见的屏蔽技术,但它在有效位中给出了 2 的补码和 1 的扩展。例如 print(bin(-7 & 0b1111111111111111).replace("0b","")) 输出: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'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章