HOWTO · Python
Converter Int para Binário em Python
Este tutorial irá demonstrar como converter inteiros em binários em Python
Nesta página
A função integrada bin() do Python é a maneira mais rápida de converter um inteiro em uma string binária. Use format() ou formatação de strings quando quiser os dígitos sem o prefixo 0b; um exemplo de manipulação de bits mostra como montar os dígitos manualmente.
Use bin() para converter um inteiro em binário no Python
Chame bin() passando um inteiro. A função retorna uma string cujos dígitos binários vêm depois do prefixo 0b, que identifica a representação em base 2.
value = 16
binary = bin(value)
print(binary)
0b10000
Para um inteiro negativo, bin() coloca - antes do prefixo, como em bin(-10). O resultado é uma string: use-a diretamente para exibição ou converta-a em valor numérico apenas se a aplicação precisar disso.
Use format() para converter um inteiro em binário sem o prefixo 0b
Passe o inteiro e o especificador de formato b para format() para obter somente os dígitos binários. Esse especificador seleciona a base 2; ao contrário de bin(), o resultado não inclui 0b. Neste caso, format() é a função integrada, e bin() também é uma função integrada, não um método; ela retorna a representação com prefixo descrita acima.
value = 10
binary_digits = format(value, "b")
print(binary_digits)
1010
Para inteiros negativos, a string formatada inclui um sinal de menos no início, seguido pelos dígitos binários do valor absoluto. Para acrescentar zeros à esquerda, use uma largura como em format(10, "08b"); a largura inclui os dígitos e qualquer sinal. Ela é um mínimo, portanto um valor que precise de mais dígitos não será truncado.
Use formatação de strings para converter um inteiro em binário no Python
O método str.format() usa o mesmo especificador de formato b. Ele é útil para inserir o valor em uma string maior. Uma f-string é uma alternativa mais concisa. No exemplo, o rótulo visível Value: permanece em inglês; o valor binário é inserido depois dele.
value = 15
formatted = "Value: {:b}".format(value)
f_string = f"Value: {value:b}"
print(formatted)
print(f_string)
Value: 1111
Value: 1111
Para preencher os dígitos binários até uma largura mínima, acrescente uma largura antes de b, como em {:08b} ou {value:08b}. As duas formas mantêm o sinal de inteiros negativos e preenchem o campo formatado até a largura mínima solicitada; o sinal conta nessa largura.
Converta um inteiro em binário com manipulação de bits
Uma conversão manual pode ler repetidamente o bit menos significativo com & 1 e, em seguida, deslocar o valor absoluto para a direita com >>. Como os bits são coletados da direita para a esquerda, inverta-os para formar os dígitos binários. A função auxiliar abaixo trata zero explicitamente e representa um inteiro negativo com um sinal de menos seguido pelos dígitos binários do seu valor absoluto, conforme a convenção de exibição de sinal e magnitude do Python, e não como uma representação em complemento de dois de largura fixa.
def int_to_binary(value):
if value == 0:
return "0"
sign = "-" if value < 0 else ""
magnitude = abs(value)
bits = []
while magnitude:
bits.append(str(magnitude & 1))
magnitude >>= 1
return sign + "".join(reversed(bits))
for number in (15, 0, -10):
print(int_to_binary(number))
1111
0
-1010
Essa abordagem ilustra a extração de bits, enquanto bin() e format() são opções mais simples para conversões comuns. O loop termina quando não restam bits no valor absoluto; o caso explícito para zero fornece seu único dígito binário. Como o algoritmo converte o valor absoluto e acrescenta o sinal separadamente, ele não pretende produzir uma representação em complemento de dois de largura fixa. Ao trocar dados binários com um protocolo ou uma interface de hardware, escolha explicitamente a largura e a representação.