不用加减乘除做加法

  • 先计算两个数按位相加的结果
  • 在计算两个数相加的过程有没有进位(按位与左移一位即可)
public int Add(int num1,int num2) {
        int r1 = num1^num2;
        int r2 = (num1&num2)<<1;
        //如果进位为0,那么可以结束
        if(r2==0)
        {
            return r1;
        }
        while(r2!=0)
        {
            //先保存按位相加的结果
            int t = r1;
            //计算新的按位相加的结果
            r1 = r1^r2;
            //计算新的进位值
            r2 = (t&r2)<<1;
        }
        return r1;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容