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

    科技2025-01-14  3

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

    解题思路

    观察 a + b 当a, b取值分别为0, 1时非进位和和进位的情况 a b 非进位和 进位 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 进位 = (a & b) << 1, 非进位和 = a ^ b

    代码

    class Solution { public int add(int a, int b) { // 观察 a + b 当a, b取值分别为0, 1时非进位和和进位的情况 // 可知, 进位 = (a & b) << 1, 非进位和 = a ^ b while (b != 0) { // 当进位为0时跳出 int c = (a & b) << 1; a = a ^ b; b = c; } return a; } }
    Processed: 0.011, SQL: 8