- 所挑選的題目
Sum of Two Integers
- //1. java
class Solution {
public int getSum(int a, int b) {
while (b != 0) {
int sum = a ^ b;
int carry = (a & b) << 1;
a = sum;
b = carry;
}
return a;
}
}
- //2.c++
class Solution {
public:
int getSum(int a, int b) {
int bitoR = a | b;
int bitanD = a & b ;
int carry = 0;
int sum = 0;
for(int i = 0 ; i < 32 ; i ++)
{
if((bitanD &( 1<<i)) && carry == 1)
{
sum = (sum | (1<<i));
carry = 1;
}
else if((bitanD &( 1<<i)))
{
carry = 1;
}
else if((bitoR &( 1<<i)) && carry == 1)
{
carry = 1;
}
else if((bitoR &( 1<<i))){
sum = (sum | (1<<i));
carry = 0;
}
else{
sum = (sum | (carry<<i));
carry = 0;
}
}
return sum;
}
};
- //3.c
int getSum(int a, int b){
unsigned int sum = (unsigned int)a ^ (unsigned int)b;
unsigned int carry = ((unsigned int)a & (unsigned int)b) << 1;
while(carry != 0)
{
unsigned int temp = sum ^ carry;
carry = (sum & carry) << 1;
sum = temp;
}
return (int)sum;
}
- //4.JavaScript
var getSum = function(a, b) {
while(b) {
let carry = (a & b) << 1;
a ^= b;
b = carry;
}
return a;
};