Skip to content

Instantly share code, notes, and snippets.

@variux
Last active February 8, 2019 15:34
Show Gist options
  • Save variux/2c82c370fd96622e15181cc8fa38a388 to your computer and use it in GitHub Desktop.
Save variux/2c82c370fd96622e15181cc8fa38a388 to your computer and use it in GitHub Desktop.
decimal a binario [Proyecto para Axel Aguirre]
def decimal_binario(decimal):
binario = ""
#Aqui le decimos que si el cociente de la division (Este tipo de division devuelve un entero por cierto)
#es distinto de cero sigalo haciendo
#Tomando en cuenta que el decimal sea 10, el entero seria 5 el cual es diferente de 0 entonces:
while decimal // 2 != 0:
#Agarramos y para obtener el binario obtenemos el residuo y lo vamos acumulando
binario = binario + str(decimal % 2)
#Aqui lo que hacemos es que vamos cambiando el valor del decimal, o sea el residuo para dividirlo la siguiente vez, ademas
#como usted deberia saber porque teoricamente primero uno lo hace a mano, para formar el binario
#se toma, todos los residuos mas el ultimo cociente
decimal = decimal // 2
print("Binario: " + str(binario))
print("Decimal: " + str(decimal))
#Por eso aqui sumamos el ultimo cociente obtenido mas el binario de cada ciclo
return str(decimal) + binario
print(decimal_binario(22))
"""
Yo no le doy la vuelta vamos a ver un ejemplo de un recorrido a mano, el numero 10
Primera vuelta (Tenemos al 10)
mientras decimal // 2 != 0
10 // 2 = 5, 5 es diferente de 0? si
entonces haga:
binario = binario anterior (En esta primera vuelta no tenemos es vacio) + 10 mod 2 (O sea el residuo), en este caso 0
entonces binario en este momento es igual a 0
decimal como lo explique anteriormente es 5
Segunda vuelta (Tenemos al 5)
mientras decimal // 2 != 0
5 // 2 = 2, 2 es diferente de 0? Si
entonces haga:
Binario = binario anterior (0) + 5 mod 2 (O sea el residuo), en este caso 1
entonces binario en este momento es igual a 0 y se le añade un 1 al frente
teniendo binario = 10
Tercera vuelta (Tenemos al 2)
mientras decimal // 2 != 0
2 // 2 = 1, 1 es diferente de 0? si
entones haga:
Binario = binario anterior (01) + 2 mod 2 (O sea el residuo), en este caso 0
entonces binario en este momento es igual a 10 y se le añade un 0 al final (Porque asi se concatenan las strings)
teniendo binario = 010
Cuarta Vuelta(Tenemos al 1)
mientras decimal // 2 != 0
1 // 2 = 0, 0 es diferente de 0? No
Entonces haga:
nada
termina ciclo
Retornamos el ultimo decimal obtenido porque vea que la variable decimal no se acumula si no que se sobreescribe en cada ciclo
la ultima que tuvimos fue 1, vea que el ciclo en la cuarta vuelta no se cumple asi que no se sobreescribe, entonces cuando retornamos
Le añadimos ese 1 al frente + la acumulacion del binario
teniendo la conversion
1010
Yo no le doy la vuelta lo unico que hago es que concateno al inicio
binario = binario + str(decimal % 2)
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment