zoukankan      html  css  js  c++  java
  • LintCode A+B问题

    给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。

    说明

    a和b都是 32位 整数么?

    • 是的

    我可以使用位运算符么?

    • 当然可以
    样例

    如果 a=1 并且 b=2,返回3

    1.(忽略进位):0+0=0,0+1=1,1+0=1,1+1=0,异或运算。
    2.1+1会向前产生进位1,相对于这一数位的进位值为10,而10=(1&1)<<1。
    3.将第1步和第2步得到的结果相加,其实又是在重复这2步,直到不再产生进位为止。

    class Solution {
    public:
        /*
         * @param a: The first integer
         * @param b: The second integer
         * @return: The sum of a and b
         */
        int aplusb(int a, int b) {
            // write your code here, try to do it without arithmetic operators.
            if(a==0)
             return b;
            if(b==0)
             return a;
             int _a=a^b;
             int _b=(a&b)<<1;
             return aplusb(_a,_b);
        }
    };
    

      

  • 相关阅读:
    Chapter 14_2 全局变量声明
    chapter 14_1 环境
    chapter 13_4 跟踪table的访问
    Linq to Entity 和 Linq to Object 异同
    ADO.net实体类操作
    XML
    JavaScript
    CSS样式表
    HTML
    java 反射
  • 原文地址:https://www.cnblogs.com/lelelelele/p/6093775.html
Copyright © 2011-2022 走看看