【】 Leetcode371 suma de dos números enteros

/ * Cualquier par de números con signo se representan dentro de complemento de la computadora, caracterizado por positivo o negativo, de acuerdo con complementar:
 * 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 10 este método simple mayoría de calcular el bit de signo más importante, también, pero no se desborde la parte superior de la
 * finalmente el complemento se convierte en la fuente, obtener un número de nosotros cognitiva (este paso no es necesario dentro de la computadora, puede ser un complemento)
 * no se considera una operación de suma, nada menos que la adición estándar, y luego calcular el arrastre
 * las adiciones estándar:
 * 0 + 0 = 0, 0 + 1 = 1, 1+ 0 = 1, 1 + 1 = 0, es decir XOR;
 * adición binaria:
 * 0 + 0 = 0, 0 + 1 = 0, 1 + 0 = 0, 1 + 1 = 1, es decir, con;
 cálculo * dejó de llevar a cabo, ya que es entrar en la posición alta, y el signo negativo es irrelevante razones anteriores ya se ha explicado incluido
 * * / 


class Solution {
public:
    int getSum(int a, int b) {
        int local = a^b;
        unsigned int tmp = a&b;
        int count = tmp<<1;//<<是7级,&10级
        if(!count)
            return local;
        else
            return getSum(local, count);
    }
};

Tmp en el papel, ya que el resultado es un int y B, números con signo, directa << no son necesariamente los resultados que queremos, porque queremos turno realidad sin firmar izquierda, el símbolo de la izquierda debe ser eliminado.

 

Referencia https://www.cnblogs.com/grandyang/p/5631814.html práctica, pero siento que con el fin de hacer frente a la cuestión de la <<, aunque sus métodos pueden ser ob, pero no la causa.

Publicados 112 artículos originales · elogios ganado 15 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_39458342/article/details/104882638
Recomendado
Clasificación