Desidero stampare la rappresentazione bit dei numeri sulla console, in modo da poter vedere tutte le operazioni eseguite sugli stessi bit.rappresentazione bit di stampa di numeri in python
Come posso farlo in Python?
Desidero stampare la rappresentazione bit dei numeri sulla console, in modo da poter vedere tutte le operazioni eseguite sugli stessi bit.rappresentazione bit di stampa di numeri in python
Come posso farlo in Python?
Questo genere di cose?
>>> ord('a')
97
>>> hex(ord('a'))
'0x61'
>>> bin(ord('a'))
'0b1100001'
In Python 2.6+:
print bin(123)
risultati in:
0b1111011
in 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, esempio tratto da: " Mark Dufour "a http://mail.python.org/pipermail/python-list/2003-December/240914.html
è possibile aggiungere ulteriori bin = lambda B:. '0b' + '' join (map (str, binary (b))), quindi imita 2.6 + completamente –
cosa voglio che il file binario riempito con 0 corrisponda a un numero binario di lunghezza fissa. – VaidAbhishek
'bin (-7)' restituisce '-0b111' ma la funzione restituisce' [] '. –
Da Python 2.6 - con l'string.format method:
"{0:b}".format(0x1234)
in particolare, come si potrebbe utilizzare imbottitura, in modo che più stampe su numeri diversi ancora in fila:
"{0:16b}".format(0x1234)
e lasciare il riempimento con spazi iniziali anziché spazi:
"{0:016b}".format(0x1234)
Da Python 3.6 - con f-strings:
Gli stessi tre esempi, con f-stringhe, sarebbe:
f"{0x1234:b}"
f"{0x1234:16b}"
f"{0x1234:016b}"
Leggermente off-topic, ma potrebbe essere utile. Per una migliore stampa user-friendly userei la funzione di stampa personalizzata, definire i caratteri di rappresentazione e la spaziatura di gruppo per una migliore leggibilità. Ecco un esempio di funzione, ci vuole una lista/array e la larghezza del gruppo:
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)
uscita:
---- ----
---- ---k
---- --k-
-kkk kkkk
k--- ----
kkkk kkkk
Essendo rigoroso, questa è la rappresentazione binaria di un numero, ma non necessariamente i bit sottostanti in memoria. – bgusach