Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.78 KB | None | 0 0
  1. ''' =========================================
  2. Programa que recebe dois decimais separados
  3. por um espaço, os converte em binários, soma
  4. os dois, converte para decimal e imprime na
  5. tela.
  6. ========================================= '''
  7.  
  8.  
  9. '''
  10.  Recebe um número decimal e converte em binário
  11.  com a ordem dos bits invertidos
  12.  (bits mais significativos à direita)
  13. '''
  14. def converte_decimal_binario(numero):
  15.   decimal1 = []
  16.   indice = 0
  17.  
  18.   while(numero > 0):  
  19.     if(numero == 1):
  20.       decimal1.insert(indice, 1)
  21.       numero = 0
  22.     else:
  23.       decimal1.insert(indice, numero % 2)
  24.       numero = numero  // 2
  25.       indice = indice + 1
  26.   return decimal1
  27.  
  28. '''
  29.  Função que recebe dois numeros binários invertidos e
  30.  iguala a quantidade de bits completando com zeros
  31. '''
  32. def iguala_bits(decimal, decimal2):  
  33.   diferenca = abs(len(decimal2) - len(decimal))
  34.   lista_maior = []
  35.   if(len(decimal) > len(decimal2)):
  36.     for valor in range(diferenca):
  37.       decimal2.append(0)
  38.     lista_maior = decimal2
  39.   else:
  40.     for valor in range(diferenca):
  41.       decimal.append(0)
  42.     lista_maior = decimal
  43.   return lista_maior
  44.  
  45. '''
  46.  Função recebe dois binários invertidos e retorna sua soma
  47. '''
  48. def soma_binarios(binario, binario2):
  49.   soma = 0
  50.   resto = 0
  51.   lista_somada = []
  52.   for valor in range(len(binario)):
  53.     soma = ((binario[valor] + binario2[valor]) + resto)
  54.     if(soma == 0):
  55.       lista_somada.insert(valor, 0)
  56.       soma = 0
  57.       resto = 0
  58.     elif(soma == 1):
  59.       lista_somada.insert(valor, 1)
  60.       soma = 0
  61.       resto = 0
  62.     elif(soma == 2):
  63.       lista_somada.insert(valor, 0)
  64.       soma = 0
  65.       resto = 1
  66.     else:
  67.       lista_somada.insert(valor, 1)
  68.       soma = 0
  69.       resto = 1
  70.   lista_somada.append(resto)
  71.   return lista_somada
  72.  
  73. '''
  74.  Função recebe um binário invertido e retorna
  75.  convertido em decimal
  76. '''
  77. def converte_binario_decimal(binario1):
  78.   multiplicador = 1
  79.   resultado = 0
  80.   for valor in range(len(binario1)):    
  81.     resultado = multiplicador * binario1[valor] + resultado
  82.     multiplicador = multiplicador * 2
  83.   return resultado
  84.  
  85. # Recebe dois decimais separado por espaço
  86. entrada = input()
  87. entrada = entrada.split()
  88. numero2 = int(entrada[1])
  89. numero1 = int(entrada[0])
  90.  
  91. # Converte os decimais em binários invertidos
  92. decimal = converte_decimal_binario(numero1)
  93. decimal2 = converte_decimal_binario(numero2)
  94.  
  95. # Iguala a quantidade de bits
  96. if(len(decimal) > len(decimal2)):
  97.   decimal2 = iguala_bits(decimal, decimal2)
  98. else:
  99.   decimal = iguala_bits(decimal, decimal2)
  100.  
  101. # Soma os dois binários
  102. decimal_somado = soma_binarios(decimal, decimal2)
  103.  
  104. # Converte para decimal
  105. decimal_final = converte_binario_decimal(decimal_somado)
  106.  
  107. # Imprime a soma dos decimais captados na entrada
  108. print(decimal_final)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement