Python中showbits()的替代方案,用于显示16位二进制表示

时间:2014-01-27 11:45:30

标签: python

我想知道,某个模块中是否有任何built_in函数显示任意数字的16位二进制表示?

2 个答案:

答案 0 :(得分:1)

假设“任何数字”是指'可以用16位表示的整数':

如另一张海报所述,bin()函数执行基本的10-base-2转换。

我不认为有一个内置函数专门给出一个16位表示,但如果数字是正数,你可以简单地填写开头,如果你想做它16位:

def padded_bin(x):
    return bin(x)[2:].zfill(16) # the [2:] strips off the '0b' that bin() returns

如果数字为负数,则标准表示为二进制补码(反转位,并加1)。

def padded_bin_with_complement(x):
    if x < 0:
        return bin((2**16) - abs(x))[2:].zfill(16)
    else:
        return bin(x)[2:].zfill(16)

(这些函数不会检查数字是否在范围内,但我确定你可以轻松添加它。如上所述,它们剥离了bin()返回的'0b',但是你可以随时添加回来。)

编辑:实际上,看一下printing bit representation of numbers in python的答案之一,您可以使用:

"{0:16b}".format(x)
Python 2.6及更高版本中的

。但是,它以与bin()相同的方式处理负数,即通过添加负号而不是给出二进制补码表示。

答案 1 :(得分:0)

bin 将返回二进制字符串

>>> bin(1)
'0b1'
>>> bin(8)
'0b1000'