码迷,mamicode.com
首页 > 其他好文 > 详细

不用加减乘除做加法

时间:2016-09-02 10:01:24      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:既然不能用四则运算符号,那么只能考虑用位运算符啦。考虑,如5+7=12,5为101,7为111,两者先做不加进位的运算,101+111=010,进位为1010(这一部分可以看成是101&111=101,然后将101左移一位变为1010),类似地,仍将进位的结果1010和不加进位的加法010,继续上一步,010-》5,1010-》7,不加进位加为1000,进位为100,同理,继续相加,1000-》5,100-》7,不加进位加为1100,进位为0000,至此,进位为0,算法结束。
 public int Add(int num1,int num2) {
        if(num1 == 0 && num2==0) return 0;
        if(num1 !=0 &&num2==0) return num1;
        if(num1==0&&num2!=0) return num2;
        int sum=0;
        int carray=0;
        do{
          sum = num1^num2;
          carray = (num1&num2)<<1;
          num1 = sum;
          num2 = carray;
        }while(num2!=0);
         return sum;
    }

 

不用加减乘除做加法

标签:

原文地址:http://www.cnblogs.com/yingpu/p/5832248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!