Descripción Título: Dados dos cadena binaria, y el regreso a su (expresado en binario). Y una cadena de entrada no vacío contiene sólo numérica 1
y 0
.
Un pensamiento: Usar funciones integradas pitón
1 clase Solución: 2 def addBinary (sí, a: str, b: str) -> str: 3 retorno ' {0: b} ' .formato (int (a, 2) + int (b, 2)) # int ( x , de base = 10 )
Sobre algunos de los formato de uso de referencia https://www.cnblogs.com/benric/p/4965224.html
Pensar dos: Establecer indicador que indica si un acarreo.
. 1 clase Solución: 2 DEF addBinary (Self, A: STR, B: STR) -> STR: . 3 En Flag = 0 . 4 n- = max (len (A), Len (B)) . 5 A, B = a.zfill ( n-), b.zfill (n-) # zfill desde el extremo izquierdo se rellena con ceros hasta que una serie de n- 6. ANS = '' 7. para I en la gama (1, len (a.) hecho +1 ): . 8 SI a [-i ] == '1 ' : . 9 . En la bandera 1 = + 10 IF B [-i] == ' 1. ' : . 11 . En la bandera + 1 = 12 es SI En la bandera == 2% 1:. # En bandera indica un acarreo dígitos 13 es ANS = + ' 1. ' 14 el otro : 15 ANS + = ' 0 ' 16 En Flag // = 2 17. SI En la bandera == 1. : 18 es ANS = + ' 1. ' 19. retorno ANS [-1 :: -. 1] # salida inversa
Tres ideas : ningún cálculo Además se calcula en bits.
Como se muestra, no el bit de acarreo del sumador correspondientes a la operación XOR sencilla (cuando el valor de A y B no son simultáneamente 1)
Como se muestra, el arrastre generado por cálculo. Por ejemplo uno, es decir, la caja verde antes de añadir el arrastre generado por el cuadro de color azul se añade a la bit correspondiente
Loop no llevará en el sumador sumando el resultado generado, hasta un acarreo no se genera hasta el momento (es decir, cuando carry = 0)
. 1 clase Solución: 2 DEF addBinary (Self, A: STR, B: STR) -> STR: . 3 X, Y = int (A, 2), int (B, 2 ) 4. El tiempo Y: 5. ANS = x ^ y # operación XOR 6. con Carry = (X & y) 1 <<. # fase e izquierda 7. X, y = ANS, con Carry 8. retorno bin (X) [2:] # porque las salidas binarias son 0bxxxx