diff options
Diffstat (limited to 'sum_two_integers.c')
-rw-r--r-- | sum_two_integers.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sum_two_integers.c b/sum_two_integers.c new file mode 100644 index 0000000..4fee7e9 --- /dev/null +++ b/sum_two_integers.c @@ -0,0 +1,22 @@ +// 371. Sum of Two Integers +#include "leetcode.h" + +/* + * given two integers 'a' and 'b', return the sum of the two integers without + * using the operators '+' and '-'. + */ + +int getSum(int a, int b) { + int trigger = a & b, ans = a ^ b; + while (trigger) { + int carry = (trigger & 0xFFFFFFFF) << 1; + trigger = carry & ans; + ans ^= carry; + } + return ans; +} + +int main() { + printf("%d\n", getSum(1, 2)); // expect: 3 + printf("%d\n", getSum(2, 3)); // expect: 5 +} |