写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。
设两数的二进制形式为a, b,则两数之和S = 非进位和 + 进位,同时非进位和与异或运算规律相同,进位与与运算规律相同(需左移一位)。 设n = a异或b, c = a&b<<1,循环求n和c,直至进位c = 0,此时和S = n,返回n即可。 知道上述规律之后,代码写起来似乎很简单,但如果你用Python写的话,就会遇到一个很奇葩的问题:在C、C++、Java中负数都是以补码形式存储的,因为在计算机系统中数值一律用补码来存储(CPU只有加法器),用补码的话加减法可以统一处理。奇葩就奇葩在在Python中没有int,long等不同长度变量,即没有变量位数的概念。所以下面Python代码可能引起不适,但在代码中都有注释。