leetcode-剑指offer-65:二进制实现加法

  • Post author:
  • Post category:其他

题目描述

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

示例:

输入: a = 1, b = 1
输出: 2

解题思路

  • 使用二进制
  • s = a + b = n + c;c为进位和,n为非进位和
  • 异或操作可得到非进位和,相与并左移一位可得到进位和

代码实现

func add(a int, b int) int {
    // 进位为0跳出循环
    for b != 0 {
        // 进位和
        c := (a & b) << 1
        // 非进位和
        a ^= b

        b = c
    }
    return a
}

版权声明:本文为yc______原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。