Concise [C++]
```\n/\nWe will use \'xor\' because \n1) 0^0 = 0\n2) 1^1 = 1 (need to do something for the carry)\n3) 1^0 or 0^1 = 1\n\nFor carry, we can use \'and\' as 1 & 1 =
```\n/*\nWe will use \'xor\' because \n1) 0^0 = 0\n2) 1^1 = 1 (need to do something for the carry)\n3) 1^0 or 0^1 = 1\n\nFor carry, we can use \'and\' as 1 & 1 = 1, use left shift to use carry at the right position.\n\n& 0xffffffff is to prevent error: left shift of negative value\n*/\n\nclass Solution {\npublic:\n    int getSum(int a, int b) {\n        \n\n        int carry;\n        while(b) {\n            carry = a&b;\n            a = a^b;\n            b = (carry & 0xffffffff) << 1;\n        }\n        \n        return a;\n    }\n};
['C']