剑指 Offer 65. 不用加减乘除做加法
题目
题意
就是不让用加减乘除等运算来模拟实现加法运算。
题解
异或找到不需要进位的情况。
相与找到需要进位的情况。然后左移一位模拟进位。
不停循环直到进位的值为零时,即两数异或就是两个数的和的情况。
show your code
class Solution { public: int add(int a, int b) { int n, m; while (b != 0) { //这是无进位的情况。 n = a ^ b; //进位的。 m = (unsigned int)(a & b) << 1; // 转换成无符号数。可能有负数的情况。 a = n; b = m; // 一直到进位的情况为 0,退出循环。 } return a; } };
喜欢的话,给博主赏一杯冰阔乐吧