Làm thế nào để bạn thể hiện bằng chữ nhị phân trong Python?
Chúng không phải là "nhị phân", mà là "số nguyên". Bạn có thể biểu thị chữ nguyên với định dạng nhị phân 0
theo sau là a B
hoặc b
theo sau là một loạt các số không và số không, ví dụ:
>>> 0b0010101010
170
>>> 0B010101
21
Từ tài liệu Python 3 , đây là những cách cung cấp chữ nguyên trong Python:
Chữ nguyên được mô tả bởi các định nghĩa từ vựng sau đây:
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"
Không có giới hạn về độ dài của số nguyên bằng chữ ngoài những gì có thể được lưu trữ trong bộ nhớ khả dụng.
Lưu ý rằng các số 0 đứng đầu trong số thập phân khác không được phép. Điều này là để định hướng với các chữ bát phân kiểu C, mà Python đã sử dụng trước phiên bản 3.0.
Một số ví dụ về chữ nguyên:
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
Thay đổi trong phiên bản 3.6: Dấu gạch dưới hiện được phép cho các mục đích nhóm theo nghĩa đen.
Các cách khác để thể hiện nhị phân:
Bạn có thể có các số 0 và số một trong một đối tượng chuỗi có thể được thao tác (mặc dù bạn có thể chỉ cần thực hiện các thao tác bit trên số nguyên trong hầu hết các trường hợp) - chỉ cần chuyển int chuỗi số 0 và số cơ sở và cơ sở bạn đang chuyển đổi từ (2 ):
>>> int('010101', 2)
21
Bạn có thể tùy chọn có tiền tố 0b
hoặc 0B
:
>>> int('0b0010101010', 2)
170
Nếu bạn vượt qua nó 0
làm cơ sở, nó sẽ giả sử cơ sở 10 nếu chuỗi không chỉ định với tiền tố:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
Chuyển đổi từ int trở lại nhị phân có thể đọc được của con người:
Bạn có thể chuyển một số nguyên cho bin để xem biểu diễn chuỗi của một chữ nhị phân:
>>> bin(21)
'0b10101'
Và bạn có thể kết hợp bin
và int
quay trở lại:
>>> bin(int('010101', 2))
'0b10101'
Bạn cũng có thể sử dụng một đặc tả định dạng, nếu bạn muốn có chiều rộng tối thiểu với các số 0 trước:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'