Sum of Two Integers
题意
给两个数a, b,求不用+运算符计算出a+b的结果
解法
这题目比较新颖,利用位运算来模拟加号,方法是用^来实现位相加,用&来实现位进位,当然进位的时候因为要向高位进位,所以&的结果要向左移位,我们来看一个例子:
比如6,5: 6的二进制110, 5的二进制101
- 110^101 = 011 , 110&101 = 100, 100向左移位100<<1 = 1000
- 011^1000 = 1011, 011&1000 = 0000
运算结束,结果就是1011=11,正确
但是由于python没有无符号右移,而且左移超过范围就会转变类型,所以我们这用C++会比较方便。
代码
|
|