Bagaimana Anda mengekspresikan literal biner dengan Python?
Mereka bukan "biner" literal, melainkan "integer literals". Anda bisa mengekspresikan bilangan bulat integer dengan format biner dengan 0
diikuti oleh B
atau b
diikuti oleh serangkaian nol dan yang, misalnya:
>>> 0b0010101010
170
>>> 0B010101
21
Dari Python 3 docs , ini adalah cara untuk menyediakan bilangan bulat integer dalam Python:
Literal integer dijelaskan oleh definisi leksikal berikut:
integer ::= decinteger | bininteger | octinteger | hexinteger
decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger ::= "0" ("b" | "B") (["_"] bindigit)+
octinteger ::= "0" ("o" | "O") (["_"] octdigit)+
hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::= "1"..."9"
digit ::= "0"..."9"
bindigit ::= "0" | "1"
octdigit ::= "0"..."7"
hexdigit ::= digit | "a"..."f" | "A"..."F"
Tidak ada batasan untuk panjang bilangan bulat integer selain dari apa yang dapat disimpan dalam memori yang tersedia.
Perhatikan bahwa angka nol di depan dalam angka desimal bukan nol tidak diperbolehkan. Ini untuk disambiguasi dengan literal oktal gaya-C, yang digunakan Python sebelum versi 3.0.
Beberapa contoh literal bilangan bulat:
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
Berubah dalam versi 3.6: Garis bawah sekarang diizinkan untuk tujuan pengelompokan dalam literal.
Cara lain untuk mengekspresikan biner:
Anda dapat memiliki nol dan satu dalam objek string yang dapat dimanipulasi (walaupun Anda mungkin harus melakukan operasi bitwise pada integer dalam banyak kasus) - cukup masukkan int string nol dan satu dan basis Anda mengkonversi dari (2 ):
>>> int('010101', 2)
21
Anda dapat memiliki 0b
atau 0B
awalan:
>>> int('0b0010101010', 2)
170
Jika Anda meneruskannya 0
sebagai basis, ia akan menganggap basis 10 jika string tidak menentukan dengan awalan:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
Mengubah dari int kembali ke biner yang dapat dibaca manusia:
Anda bisa meneruskan integer ke bin untuk melihat representasi string dari literal biner:
>>> bin(21)
'0b10101'
Dan Anda dapat menggabungkan bin
dan int
untuk bolak-balik:
>>> bin(int('010101', 2))
'0b10101'
Anda dapat menggunakan spesifikasi format juga, jika Anda ingin memiliki lebar minimum dengan nol sebelumnya:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'