剑指 Offer 65. 不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。
示例:
输入: a = 1, b = 1 输出: 2
class Solution { public: int add(int a, int b) { while (b!=0) { int c = ((unsigned int)(a&b)) << 1; a ^= b; b = c; } return a; } };
一开始不是很懂这个代码,自己尝试了一下运算,a&b是进位的结果,a^b是无进位加法的结果,如果是负数同样成立,因为负数在计算机中是以补码的形式存在的
浙公网安备 33010602011771号