<剑指Offer>面试题65: 不用加减乘除做加法

2019-02-26  本文已影响0人  cb_guo

题目描述

题目解读

代码

class Solution {
public:
    int Add(int num1, int num2){
        int sum, jinwei;
        do{
            sum = num1 ^ num2;
            jinwei = (num1 & num2) << 1;
            num1 = sum;
            num2 = jinwei;
        }while(num2 != 0);
        return num1;
    }
};

扩展题目

不使用新的变量,交换两个变量的数值。比如我们有两个变量 a, b,我们希望交换它们的值。有两种不同的方法

a = a + b;   // a 暂存两数之和
b = a - b;   // b为两数之和减去b,b变为原来的a
a = a - b;   // a为两数之和减去现在的b(原来的a),变成原来的b
a = a ^ b;
b = a ^ b;
a = a ^ b;
上一篇下一篇

猜你喜欢

热点阅读