不用加减乘除做加法
Posted 樱圃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不用加减乘除做加法相关的知识,希望对你有一定的参考价值。
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
思路:既然不能用四则运算符号,那么只能考虑用位运算符啦。考虑,如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; }
以上是关于不用加减乘除做加法的主要内容,如果未能解决你的问题,请参考以下文章