Last active
February 8, 2019 15:34
-
-
Save variux/2c82c370fd96622e15181cc8fa38a388 to your computer and use it in GitHub Desktop.
decimal a binario [Proyecto para Axel Aguirre]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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