美文网首页
剑指offer65 不用+-*/计算和

剑指offer65 不用+-*/计算和

作者: 再凌 | 来源:发表于2020-05-07 12:39 被阅读0次

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

    位运算的知识点:

    a^b -> 得到计算后的低位信息, 丢失进位信息
    (unsigned) (a&b) << 1 -> 得到计算后每一位的进位信息, 通过左移之后, 交给高位

    int add(int a, int b){
        int temp;
        while(a != 0)
        {
            //temp保存每一位加法后的低位信息
            temp = a ^ b;
            //a保存的是进位信息, 进位信息0或者1不代表正负, 因此用unsigned
            a = (unsigned) (a & b) << 1;
            b = temp;
        }
        return b;
    }
    
    
    

    时间复杂度: 1
    空间复杂度: 1

    相关文章

      网友评论

          本文标题:剑指offer65 不用+-*/计算和

          本文链接:https://www.haomeiwen.com/subject/panoghtx.html