Ajoutez deux entiers sans utiliser + ou -.Ajout d'un entier binaire sans utiliser + ou -
Ceci est ma solution.
class Solution {
public:
int getSum(int a, int b) {
int temp=a & b;
a=a^b;
while (temp>0){
b=temp<<1;
temp=a & b;
a=a^b;
}
return a;
}
};
Mais il ne fonctionne pas sur les cas où a = -12, b = -8.
Comparer côte à côte avec la solution de travail d'un autre peuple, il a:
class Solution {
public:
int getSum(int a, int b) {
int sum = a;
while (b != 0)
{
sum = a^b;//calculate sum of a and b without thinking the carry
b = (a & b) << 1;//calculate the carry
a = sum;//add sum(without carry) and carry
}
return sum;
}
};
qui est bascially même. Pourquoi ma solution ne fonctionne pas?
Parce que le vôtre est faux. L'ordre et le placement des opérations sont significatifs. –
Je sais que j'ai tort. Mais le code est fondamentalement le même –
car 'while (temp> 0)' ... si vous & quot; 2 nombres négatifs, vous obtenez un autre négatif – technosaurus