He encontrado 2 buenos algoritmos para convertir un numero decimal a binario a través de estas funciones que reciben el numero entero en base 10 a convertir y devuelven una cadena de caractéres con los dígitos del mismo número ya convertido a base 2.

 

Python versión 2.7 

 

def binario1(n):
 
    """este primer algoritmo utiliza la formula n = 2k + b"""
 
    if n == 0 or n == 1: return str(n)
 
    k = n / 2
 
    E = binario1(k)
 
    b = n % 2
 
    return str(E) + str(b)
 
 
def binario2(n):
 
    """y este va recorriendo 1 bit hacia la derecha en cada iteracion"""
 
    if n == 0: return str(n)
 
    b = ''
 
    while n > 0:
 
        b = str(n % 2) + b
 
        n >>= 1
 
        #de esta forma el numero se va dividiendo entre 2 para llegar a 0
 
        #y terminar el bucle
 
        #tambien podria ser de esta forma
 
        #n /= 2 
 
    return b

 

Siéntente libre de comentar que te parecieron y si conoces algún otro te invito a publicarlo, gracias 

Comments

Te tengo una noticia

Noe Nieto | 11/10/2011, 15:34

A partir de Python 2.6 ya existe la función bin()

Ejemplo:

>>> bin(10)
'0b1010'

Saludos

Función bin

Pythonista | 12/10/2011, 08:58

Gracias, no la conocía, pero si que es buena puedo convertir un número como 23**123123 en tan solo un segundo en mi procesador intel atom. Ya quisiera ver su estructura

Add comment
 authimage