求两个整数之和

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
来源牛客。
 1     public int Add(int num1,int num2) {
 2         //调用函数,当然函数底层肯定用了运算符号!
 3         //return Integer.sum(num1,num2);
 4         /*if(num1 < 0){
 5             while(num1 != 0){
 6                 num2--;
 7                 num1++;
 8             }
 9         }else{
10             while(num1 != 0){
11                 num2 ++;
12                 num1 --;
13             }
14         }
15         return num2;
16         */
17         //方法三:用位运算,二进制加法
18         while(num1 != 0){    //num1作为进位
19             //不考虑进位的情况下两个二进制数相加,即求异或
20             int sum = num1 ^ num2;
21             //把进位记录下来,即求与再左移1位
22             num1 = (num1 & num2)<<1;
23             //重新参与运算
24             num2 = sum;
25         }
26         return num2;
27     }

 

posted on 2019-08-22 20:13  大猫食小鱼  阅读(674)  评论(0编辑  收藏  举报