Convertir decimal a binario en python [duplicate]

3 minutos de lectura

avatar de usuario
Pablo

¿Hay algún módulo o función en Python que pueda usar para convertir un número decimal a su equivalente binario? Puedo convertir binario a decimal usando int(‘[binary_value]’,2), entonces, ¿alguna forma de hacer lo contrario sin escribir el código para hacerlo yo mismo?

  • A diferencia de la pregunta vinculada “convertir a cadena binaria”, creo que esta pregunta es diferente. Vine aquí buscando convertir un número entero a un binario correspondiente formación (o matriz booleana), y creo que sería una respuesta sensata.

    – Sanjay Manohar

    16 de enero de 2020 a las 20:57

  • @SanjayManohar El algoritmo de procesamiento de cadenas puras que se encuentra aquí podría adaptarse para hacer lo que desee.

    – Copiar y Pegar

    15 de marzo de 2020 a las 17:11

todos los números se almacenan en binario. si desea una representación textual de un número dado en binario, use bin(i)

>>> bin(10)
'0b1010'
>>> 0b1010
10

  • Engañoso. bin() devuelve binario cuerdano binario

    – hiperbolt

    2 de febrero de 2021 a las 3:50

  • @hiperbolt podría usar un enlace a una solución no engañosa

    – Gulzar

    15 de junio de 2021 a las 9:53

"{0:#b}".format(my_int)

  • Este es el formato para imprimir con ceros a la izquierda: "{0:08b}".format(my_int)

    –Waldo Bronchart

    6 de mayo de 2013 a las 9:49


  • @WaldoBronchart eso es genial. ¿Puedes explicarme cómo funciona eso, tener los ceros a la izquierda? ¿Está eso incorporado, que obtienes los ceros iniciales con 0+8 o 0+16?

    – Alejandro Allegro

    2 de mayo de 2020 a las 11:52

avatar de usuario
usuario136036

Sin el 0b delante:

"{0:b}".format(int_value)

A partir de Python 3.6 también puedes usar literal de cadena con formato o cuerda fENERGÍA:

f"{int_value:b}"

  • Tuve el siguiente error: TypeError: non-empty format string passed to object.__format__

    – Pierna derecha

    7 febrero 2018 a las 15:47

  • lo mismo para mí con python 3.5.2 TypeError: cadena de formato no vacía pasada a object.__format__ ahh – ahora lo entiendo, lo que quisiste decir: “`>>> “{0:b}”.format(47) – –> ‘101111’

    –Josef Klotzner

    10 oct 2019 a las 18:58


  • También puede determinar la cantidad de bits que se representarán de esta manera:>>> "{:0>15b}".format(3) >>> ‘000000000000011’

    – Darina Sergeivna

    7 dic 2020 a las 21:35


  • puede también format(int_value, 'b')

    – Arye P.

    27 de mayo a las 9:24

def dec_to_bin(x):
    return int(bin(x)[2:])

Es fácil.

También puede usar una función del módulo numpy

from numpy import binary_repr

que también puede manejar ceros a la izquierda:

Definition:     binary_repr(num, width=None)
Docstring:
    Return the binary representation of the input number as a string.

    This is equivalent to using base_repr with base 2, but about 25x
    faster.

    For negative numbers, if width is not given, a - sign is added to the
    front. If width is given, the two's complement of the number is
    returned, with respect to that width.

Estoy de acuerdo con la respuesta de @aaronasterling. Sin embargo, si desea una cadena no binaria que pueda convertir en un int, puede usar el algoritmo canónico:

def decToBin(n):
    if n==0: return ''
    else:
        return decToBin(n/2) + str(n%2)

avatar de usuario
Harry

n=int(input('please enter the no. in decimal format: '))
x=n
k=[]
while (n>0):
    a=int(float(n%2))
    k.append(a)
    n=(n-a)/2
k.append(0)
string=""
for j in k[::-1]:
    string=string+str(j)
print('The binary no. for %d is %s'%(x, string))

¿Ha sido útil esta solución?