首页 > 其他 > 详细

不用加减乘除做加法

时间:2016-09-02 09:58:15      阅读:235      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!