Como você expressa um número inteiro como um número binário com literais Python?
Consegui facilmente encontrar a resposta para o hex:
>>> 0x12AF
4783
>>> 0x100
256
e octal:
>>> 01267
695
>>> 0100
64
Como você usa literais para expressar binário em Python?
Resumo das Respostas
- Python 2.5 e anterior: pode expressar o binário usando,
int('01010101111',2)
mas não com um literal. - Python 2.5 e versões anteriores: não há como expressar literais binários.
- Python 2.6 beta: Você pode fazer o seguinte:
0b1100111
ou0B1100111
. - Python 2.6 beta: também permitirá
0o27
ou0O27
(o segundo caractere é a letra O) para representar um octal. - Python 3.0 beta: o mesmo que 2.6, mas não permitirá mais a
027
sintaxe mais antiga para octais.
Eles não são literais "binários", mas "literais inteiros". Você pode expressar literais inteiros com um formato binário com um
0
seguido por umB
oub
seguido por uma série de zeros e uns, por exemplo:Nos documentos do Python 3 , estas são as maneiras de fornecer literais inteiros no Python:
Outras maneiras de expressar binário:
Você pode ter zeros e uns em um objeto de string que pode ser manipulado (embora você provavelmente deva executar operações bit a bit no número inteiro na maioria dos casos) - basta passar int a string de zeros e uns e a base da qual você está convertendo (2 ):
Opcionalmente, você pode ter o prefixo
0b
ou0B
:Se você passar
0
como base, ele assumirá a base 10 se a sequência não especificar com um prefixo:Convertendo de int de volta para binário legível por humanos:
Você pode passar um número inteiro para bin para ver a representação em cadeia de um literal binário:
E você pode combinar
bin
eint
ir e voltar:Você também pode usar uma especificação de formato, se desejar ter largura mínima com zeros anteriores:
fonte
0 no início aqui especifica que a base é 8 (não 10), o que é bastante fácil de ver:
Se você não começar com um 0, o python assume que o número é a base 10.
fonte
Tanto quanto eu posso dizer ao Python, até o 2.5, suporta apenas literais hexadecimais e octais. Eu encontrei algumas discussões sobre como adicionar binário a versões futuras, mas nada definitivo.
fonte
Eu tenho certeza que essa é uma das coisas devido à alteração no Python 3.0 com talvez bin () para ir com hex () e oct ().
EDIT: a resposta da lbrandy está correta em todos os casos.
fonte