欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【剑指Offer】不用加减乘除做加法

程序员文章站 2022-06-17 16:16:08
...

题目

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

思路

位运算题,感觉自己好fw啊,这都有点看不懂

题解:https://leetcode-cn.com/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/solution/wei-yun-suan-_mian-shi-ti-65-bu-yong-jia-jian-chen/

【剑指Offer】不用加减乘除做加法

代码

class Solution {
public:
    int add(int a, int b) {
        // 无进位和、进位值
        int sum, carry;
        while (b != 0) {
            // 异或操作得无进位和
            sum = a ^ b;
            
            // 与操作后移位得进位值
            carry = ((unsigned int) (a & b) << 1);

            // 循环,直到进位为0
            a = sum;
            b = carry;
        }

        return a;
    }
};

 

相关标签: 剑指Offer