Я хочу напечатать бит-представление чисел на консоли, чтобы я мог видеть все операции, выполняемые самими битами.
Как я могу сделать это в python?
Я хочу напечатать бит-представление чисел на консоли, чтобы я мог видеть все операции, выполняемые самими битами.
Как я могу сделать это в python?
Эта вещь?
>>> ord('a')
97
>>> hex(ord('a'))
'0x61'
>>> bin(ord('a'))
'0b1100001'
В 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]
Примечание, пример взято из: "Марк Дюфур" в http://mail.python.org/pipermail/python-list/2003-December/240914.html
Из Python 2.6 - с метод string.format:
"{0:b}".format(0x1234)
в частности, вы можете использовать прописку, так что несколько отпечатков разных чисел все равно выстраиваются в линию:
"{0:16b}".format(0x1234)
и оставить пробел с ведущими 0, а не пробелами:
"{0:016b}".format(0x1234)
Из Python 3.6 - с f-strings:
Те же три примера с f-строками будут:
f"{0x1234:b}"
f"{0x1234:16b}"
f"{0x1234:016b}"
Немного не по теме, но может быть полезно. Для лучшей удобной печати я бы использовал пользовательскую функцию печати, определял символы представления и групповой интервал для лучшей читаемости. Вот примерная функция, она принимает список/массив и ширину группы:
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