zoukankan      html  css  js  c++  java
  • Sum of Two Integers

    Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.

    Example:
    Given a = 1 and b = 2, return 3.

    分析:不通过四则运算符号完成求和;

    思路:很明显只能通过二进制的位运算来完成。这里查看一篇博客。

    https://ych0112xzz.github.io/2016/10/27/OperationwithBits/

    简述加法的原理:

    二进制数求和的过程可以分解为对应位数直接相加再加上相对应的进位。

    1,直接相加用异或可以完成: 

      0101+0101=0000

      0101^0101=0000

    2,进位可以用(a&b)<<1完成:

      0101+0101=1010

      (0101&0101)<<1=1010

    第一和第二部的结果相加只需要重复一次步骤1即可。对于多次进位,把条件设置为当步骤二结果为0是结束。

    JAVA CODE

    class Solution {
        public int getSum(int a, int b) {
            return b == 0 ? a : getSum(a ^ b, (a & b) << 1);
        }
    }
  • 相关阅读:
    007_排序_多重排序
    Locust 运行模式
    Locust介绍
    Locust环境搭建及报错解决
    8-02全局变量与输出语句
    8-01变量
    7-15ALL、 ANY、SOME子查询
    7-14 EXISTS子查询
    7-13IN和NOT IN 子查询
    7-12简单子查询
  • 原文地址:https://www.cnblogs.com/baichangfu/p/7482762.html
Copyright © 2011-2022 走看看