我想在控制台上打印数字的位表示,以便我可以看到所有正在对位进行的操作。
我怎么能在python中做到这一点?
答案 0 :(得分:67)
这种事情?
>>> ord('a')
97
>>> hex(ord('a'))
'0x61'
>>> bin(ord('a'))
'0b1100001'
答案 1 :(得分:28)
在Python 2.6 + 中:
print bin(123)
结果:
0b1111011
在python 2.x
中>>> binary = lambda n: n>0 and [n&1]+binary(n>>1) or []
>>> binary(123)
[1, 1, 0, 1, 1, 1, 1]
请注意,例子来自:{Mark 3]} {/ 3>}
答案 2 :(得分:24)
来自Python 2.6 - 使用string.format method:
"{0:b}".format(0x1234)
特别是,您可能希望使用填充,以便不同数字的多个打印仍然排列:
"{0:16b}".format(0x1234)
并且使用前导0而不是空格左边填充:
"{0:016b}".format(0x1234)
来自Python 3.6 - 与f-strings:
使用f-strings的相同三个例子是:
f"{0x1234:b}"
f"{0x1234:16b}"
f"{0x1234:016b}"
答案 3 :(得分:3)
答案 4 :(得分:1)
稍微偏离主题,但可能会有所帮助。为了更好地用户友好打印,我将使用自定义打印功能,定义表示字符和组间距以提高可读性。这是一个示例函数,它采用列表/数组和组宽度:
def bprint(A, grp):
for x in A:
brp = "{:08b}".format(x)
L=[]
for i,b in enumerate(brp):
if b=="1":
L.append("k")
else:
L.append("-")
if (i+1)%grp ==0 :
L.append(" ")
print "".join(L)
#run
A = [0,1,2,127,128,255]
bprint (A,4)
输出:
---- ----
---- ---k
---- --k-
-kkk kkkk
k--- ----
kkkk kkkk