我想知道,某个模块中是否有任何built_in函数显示任意数字的16位二进制表示?
答案 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'