算法:不用加减乘除做加法

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

首先很容易想到位运算

 1 class Solution {
 2 public:
 3     int Add(int num1, int num2)
 4     {
 5         int i,j;
 6         while(num2){
 7             i=num1^num2;
 8             j=(num1&num2)<<1;
 9             num1=i;num2=j;
10         }
11         return num1;
12     }
13 };
以6(110)和7(111)为例:
num1^num2 表示加法时不进位得到的数,001
(num1&num2)<<1表示进位的数,1100
再对他们相加就可得到两数之和,1101。


 

posted @ 2016-11-20 20:24  爱吃土豆的男孩  阅读(133)  评论(0编辑  收藏  举报