[剑指Offer-65][简单] 不用加减乘除做加法
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
提示:
a, b 均可能是负数或 0
结果不会溢出 32 位整数
解题思路
对于两个数字a
和b
, 有:
a^b
: 每位的异或运算, 得到的结果为无进位相加的结果a&b
: 每位的与运算, 得到的结果为进位结果
因此将这a^b
与a&b
左移一位相加, 得到的仍然是a+b
. 左移一位的目的是实现进位.
按照这个思路, 循环求和, 当进位为0时, 对应的就是最终的加和结果.
Python中对于负数位的处理参考: 面试题65. 不用加减乘除做加法(位运算,清晰图解).
最后更新于