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

vincent93 2017-04-09 21:16 原文

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;

 

推荐阅读