- /*
- * x ^ y :实现不进位的加法,那么我们接下来就要将进位的数据加上,就可以实现了。
- * x & y : 这个操作,即是找出相同位,为什么我们需要找出相同的位呢,因为只 1 & 1 ,这种情况才会* * 产生进位,可能有人会想那 0 & 0 呢,这个没有影响的吧。
- * (x & y) << 1:为什么要左移呢,其实也很简单,即然后我们都已经找出需要进位的位,那么说明在该位 * 置的前面一位,应该加上1,对吧,所以应该左移1位,就加上余数
- */
- int Add(int x, int y)
- {
- if ( 0 == y ) return x;
- int sum = x ^ y;
- int carry = (x & y) << 1;
- return Add(sum, carry);
- }
- //该片段来自于http://www.codesnippet.cn/detail/1812201411330.html
来源: http://www.codesnippet.cn/detail/1812201411330.html