###################################################
#     Manipulação de dígitos -- mudança de base
###################################################
# arquivo: base2to10.py
#
# Este programa transforma um dado número binário (base 2) n
# para sua representação na base 10 (decimal).
#
#  n   = 110101 (base 2)
#  dec = (1 x 2^5) + (1 x 2^4) +  (0 x 2^3) + (1 x 2^2) + (0 x 2^1) + (1 x 2^0) = 53
#  O cálculo da soma acima é feito da direita para esquerda (e guardado na variavel dec).
#  Cada potencia de 2 (que é inicialmente 1) e' atualizada multiplicando por 2 a anterior.
#  Veja o papel da variavel pot.  

def main():
    n = int(input("Digite o valor de n (um número binário):"))
    print("n = %d" %n)

    dec = 0
    pot = 1
    print("Primeira potencia de 2 = %5d" %1)
          
    while n > 0:
        dig = n % 10            # para obter o dígito mais à direita de n (casa da unidade) 
        n = n // 10             # n é atualizado desprezando-se o último dígito 
        dec = dec  + dig * pot
        pot = pot * 2         
        print("    Nova potencia de 2 = %5d" %pot) # para verificar os diversos valores de pot

    print("Representacao de n na base decimal = %d " %dec)
#----------------------
main()
            
            
            
            
                
                
            
