面试题47-不用加减乘除做加法

来源:互联网 发布:约熟女什么软件 编辑:程序博客网 时间:2024/04/28 05:00

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

解法

用位运算解答

两个数 n1、n2

(n1&n2)<<1是n1、n2相加后进位的结果

(n1^n2)是n1、n2不进位相加的结果

即n1+n2=(n1^n2)+(n1&n2)<<1,所以当没有进位的时候,两个数异或的结果是最终结果

Code:

class Solution {public:    int Add(int num1, int num2)    {        int t1,t2;        do{            t1=(num1&num2)<<1;   //进位            t2=num1^num2;     //不进位相加            //此时num1+num2=t1+t2            num1=t1;            num2=t2;        }while(num1!=0);        return num2;    }};


0 0
原创粉丝点击