LeetCode371 - Sum of Two Integers - 利用位运算求两数之和 - 扩展: 不使用新的变量,交换两个变量的值。

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;

 

posted @ 2017-04-09 21:16  蓦然闻声  阅读(134)  评论(0编辑  收藏  举报