Quiero imprimir la representación de bits de los números en la consola, de modo que pueda ver todas las operaciones que se están realizando en los bits en sí.impresión de bits de representación de números en python
¿Cómo puedo hacerlo en python?
Quiero imprimir la representación de bits de los números en la consola, de modo que pueda ver todas las operaciones que se están realizando en los bits en sí.impresión de bits de representación de números en python
¿Cómo puedo hacerlo en python?
Este tipo de cosas?
>>> ord('a')
97
>>> hex(ord('a'))
'0x61'
>>> bin(ord('a'))
'0b1100001'
En Python 2.6+:
print bin(123)
Resultados en:
0b1111011
en Python 2.x
>>> binary = lambda n: n>0 and [n&1]+binary(n>>1) or []
>>> binary(123)
[1, 1, 0, 1, 1, 1, 1]
Nota, ejemplo tomado de: " Mark Dufour "en http://mail.python.org/pipermail/python-list/2003-December/240914.html
puede añadir más bin = lambda b:. '0b' + '' se unen a (map (str, binary (b))), por lo que imita 2.6+ completamente –
lo que quiero es que el binario esté rellenado con 0 para acomodar un número binario de longitud fija. – VaidAbhishek
'bin (-7)' devuelve '-0b111' pero su función devuelve' [] '. –
Desde Python 2.6 - con el string.format method:
"{0:b}".format(0x1234)
, en particular, que le gustaría utilizar el relleno, de manera que los múltiples impresiones de diferentes números todavía se alinean:
"{0:16b}".format(0x1234)
y tener margen izquierdo con 0 iniciales en lugar de espacios:
"{0:016b}".format(0x1234)
Desde Python 3.6 - con f-strings:
Los mismos tres ejemplos, con F-strings, sería:
f"{0x1234:b}"
f"{0x1234:16b}"
f"{0x1234:016b}"
poco fuera de tema, pero podría ser útil. Para una mejor impresión fácil de usar, utilizaría la función de impresión personalizada, definiría los caracteres de representación y el espaciado entre grupos para una mejor legibilidad. Aquí es una función de ejemplo, se toma una lista/matriz y la anchura grupo:
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)
de salida:
---- ----
---- ---k
---- --k-
-kkk kkkk
k--- ----
kkkk kkkk
Siendo estricto, esta es la representación binaria de un número, pero no necesariamente los bits subyacentes en la memoria. – bgusach