Cum îți exprimi un număr întreg ca un număr binar cu Python literale?
Am fost cu ușurință capabil de a găsi răspunsul pentru hex:
>>> 0x12AF
4783
>>> 0x100
256
și octal:
>>> 01267
695
>>> 0100
64
Cum să utilizați literali să-și exprime binar în Python?
Rezumatul Răspunsurilor
int('01010101111',2)
dar nu cu un literal.0b1100111 " sau " 0B1100111
.0o27 " sau " 0O27
(al doilea caracter este litera O) să reprezinte o octal.027
sintaxa pentru octals.Pentru referință—viitor Python posibilități: Începând cu Python 2.6 vă puteți exprima binar literali folosind prefixul 0b sau 0B:
>>> 0b101111
47
Puteți folosi, de asemenea, noi ** bin funcția pentru a obține reprezentarea binară a unui număr de:
>>> bin(173)
'0b10101101'
Versiune de dezvoltare a documentației: Ce's New in Python 2.6
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255
Un alt mod.
Cum te exprima binar literali în Python?
Ei're nu "binar" literali, ci, mai degrabă, "întreg literali". Vă puteți exprima întreg literali cu un format binar, cu un " 0 "urmat de un" B " sau "b", urmat de o serie de zerouri și cele, de exemplu:
>>> 0b0010101010
170
>>> 0B010101
21
Din Python 3 documente, acestea sunt moduri de furnizarea de literali întregi în Python:
Întreg literale sunt descrise de următoarele definiții lexicale:
integer ::= decinteger | bininteger | octinteger | hexinteger decinteger ::= nonzerodigit ([""] cifre)* | "0"+ ([""] "0")* bininteger ::= "0" ("b" | "B") ([""] bindigit)+ octinteger ::= "0" ("o" | "O") ([""] octdigit)+ hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+ nonzerodigit ::= "1"..."9" cifra ::= "0"..."9" bindigit ::= "0" | "1" octdigit ::= "0"..."7" hexdigit ::= digit | "o"..."f" | "O"..."F"
nu Există nici o limită pentru lungimea de literali întregi în afară de ceea ce pot fi stocate în memoria disponibilă.
Rețineți că zerourile de la început într-un non-zero, număr zecimal nu sunt permise. Acest lucru este de dezambiguizare cu C-stil octal literali, care Python folosit înainte de versiunea 3.0.
Câteva exemple de literali întregi:
7 2147483647 0o177 0b100110111 3 79228162514264337593543950336 0o377 0xdeadbeef 100_000_000_000 0b_1110_0101 s-a Schimbat în versiunea 3.6: Subliniaza sunt acum permise pentru gruparea scopuri în literali.
Puteți avea zerouri și cele într-un șir de obiecte care pot fi manipulate (deși probabil ar trebui să facă operațiuni la nivel de bit pe întreg în cele mai multe cazuri) - doar trece int șir de zero-uri și unu și bază sunt de conversie de la (2):
>>> int('010101', 2)
21
Opțional, puteți avea 0b
sau 0B
prefix:
>>> int('0b0010101010', 2)
170
Dacă se trece de la " 0 " ca bază, se va presupune că baza 10 dacă șirul nu't specifica cu un prefix:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
Puteți trece un număr întreg de la bin pentru a vedea un șir de reprezentare de un binar literal:
>>> bin(21)
'0b10101'
Și puteți combina bin
și int
pentru a merge înainte și înapoi:
>>> bin(int('010101', 2))
'0b10101'
Puteți utiliza un format caietul de sarcini, precum și, dacă doriți să aveți lățime minimă cu zerouri precedente:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'
Sunt destul de sigur că acest lucru este unul din lucrurile ca urmare a schimbărilor în Python 3.0 poate cu bin() pentru a merge cu hex() și octombrie().
EDIT: lbrandy's răspunsul este corect în toate cazurile.