/ * 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.