1. 利用位运算求两数之和
class Solution { public: int getSum(int a, int b) { int sum = a^b;// sum 是不带进位的的和 int carry = (a&b)<<1; //carry是进位的值 while(carry != 0) { a = sum; b = carry; sum = a^b; carry = (a&b)<<1; } return sum; } };
2. 不使用新的变量,交换两个变量的值
//基于加减法 a = a + b; b = a - b; a = a - b; //基于异或运算 a = a ^ b; b = a ^ b; a = a ^ b;