代码题(53)— 不用加减法做加法、交换两个变量

1、不用加减乘除做加法

剑指offer面试题47:不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

class Solution {
public:
    int Add(int num1, int num2)
    {
        while(num2!=0)
        {
            int temp = num1 ^ num2;//求相加,不管进位
            num2 = (num1 & num2)<<1;//求进位
            num1 = temp;
        }
        return num1;
    }
};

2、交换两个变量

   不使用新的变量,交换两个变量的值。

(1)基于加法的方法

a = a+b;
b = a-b; // 此时 a+b-b=a;
a = a-b; // 此时 a+b-a=b;

 

(2)基于异或运算

a = a^b; // 找到二者的不同
b = a^b; // 二者不同与 b 相与得到 a
a = a^b; // 

 

posted @ 2018-08-24 11:01  深度机器学习  阅读(266)  评论(0编辑  收藏  举报