不用加减乘除做加法

来源:互联网 发布:unity3d 镜面反射 编辑:程序博客网 时间:2024/06/05 10:01

题目

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

解题

还剩运算:位运算,逻辑运算
可以用:if、while、for
0、1逻辑运算和和运算对比

a b & ^ 和 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 10

可以发现:
异或运算值是和运算非进位的结果
与运算值是和运算进位的结果

public class Solution {    public int Add(int num1,int num2) {        int c = num1^num2; // 无进位和        int d = num1&num2; // 进位和        if(d!=0){ // 有进位,d是高位要左移一位            return Add(d<<1,c);        }        return c;    }}
0 0
原创粉丝点击