剑指 Offer 65. 不用加减乘除做加法

    科技2022-08-22  124

    剑指 Offer 65. 不用加减乘除做加法

    题目

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

    提示: a, b 均可能是负数或 0 结果不会溢出 32 位整数

    解法

    使用位运算。 假设a、b都是某一位二进制位,那么n是非进位和,c是进位,则n和c的运算方式为

    n = a ^ b c = (a&b)<<1

    所以a+b = n+c

    class Solution { public int add(int a, int b) { while(b != 0){ int c = (a&b)<<1; a ^= b; b = c; } return a; } }
    Processed: 0.014, SQL: 9