zoukankan      html  css  js  c++  java
  • 剑指Offer-48.不用加减乘除做加法(C++/Java)

    题目:

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

    分析:

    将加法还原成最原始的计算方法,也就是分别计算进位和非进位的和,最后再将这两部分合起来,便是和。我们可以利用&和<<求进位,^求不算进位的和。

    例如5+9,5的二进制是101,9的二进制是1001,先求两个数的进位,也就是5&9=1,再左移一位,2(0010)便是进位,然后再利用异或求不算进位的和,101^1001=1100,然后再利用&和^直到进位为0时为止。

    程序:

    C++

    class Solution {
    public:
        int Add(int num1, int num2)
        {
            if(num1 == 0)
                return num2;
            if(num2 == 0)
                return num1;
            int carry = 1;
            while(num2 != 0){
                carry = (num1 & num2) << 1;
                num1 = num1 ^ num2;
                num2 = carry;
            }
            return num1;
        }
    };

    Java

    public class Solution {
        public int Add(int num1,int num2) {
            if(num1 == 0)
                return num2;
            if(num2 == 0)
                return num1;
            int carry;
            while(num2 != 0){
                carry = (num1 & num2) << 1;
                num1 = num1 ^ num2;
                num2 = carry;
            }
            return num1;
        }
    }
  • 相关阅读:
    Maven2-profile多环境配置
    Maven-setting.xml详解
    Maven-通过命令操作maven项目
    Maven-eclipse运行maven命令
    Eclipse-导入maven项目
    Maven-搭建maven web项目
    Maven-搭建普通maven项目
    Maven-pom.xml详解
    Maven-生命周期
    Maven-常用命令
  • 原文地址:https://www.cnblogs.com/silentteller/p/12083489.html
Copyright © 2011-2022 走看看