C***U 发帖数: 2406 | 1 implement adding two unsigned numbers without using "+" or "++"
回复:return(a-(-b))
这个太有意思了! |
l*****a 发帖数: 559 | 2 太有才了。
条件反射的想到bit operation,惭愧。 |
C***U 发帖数: 2406 | 3 我觉得那个人是开玩笑的
面试官想要的应该是bit operation吧
呵呵
【在 l*****a 的大作中提到】 : 太有才了。 : 条件反射的想到bit operation,惭愧。
|
s*****r 发帖数: 773 | 4 bit operation怎么做?
【在 l*****a 的大作中提到】 : 太有才了。 : 条件反射的想到bit operation,惭愧。
|
C***U 发帖数: 2406 | 5 x=(a^b)<<1
y=a&b
然后对x y递归
【在 s*****r 的大作中提到】 : bit operation怎么做?
|
I*********7 发帖数: 125 | |
I*********7 发帖数: 125 | 7
错了,
x=a^b;
y=(a&b)<<1;
再递归
【在 C***U 的大作中提到】 : x=(a^b)<<1 : y=a&b : 然后对x y递归
|
C***U 发帖数: 2406 | 8 ok
我错了
【在 I*********7 的大作中提到】 : : 错了, : x=a^b; : y=(a&b)<<1; : 再递归
|
c********t 发帖数: 5706 | 9 我的bit operation 巨差
这题,谁能给个思路。为什么这样最后就能求和?
【在 C***U 的大作中提到】 : ok : 我错了
|
C***U 发帖数: 2406 | 10 code看这里
http://blog.sina.com.cn/s/blog_60b5450101019v71.html
思路是这样的
比如你有101和110
那么你要把都是1的那些位拿出来,因为这些为相加会进一位,需要用&
这个例子里面百位都是1,所以他们相加变成0,所以进以为。那么我们就取出100 然后
进以为得到1000
然后呢你需要把剩下那些没有加的拿出来,都是0的不用拿出来,因为相加是0,所以你
就用xor把对应位置不同的位拿出来
然后再把这两个相加就是需要求的和了,这里用到recursion。
然后很容易就能说明剩下的那个数总是越来越小,最后变成0的
所以你结束recursion的条件是小的那个是0的时候,那就返回大的那个数字
【在 c********t 的大作中提到】 : 我的bit operation 巨差 : 这题,谁能给个思路。为什么这样最后就能求和?
|
|
|
c********t 发帖数: 5706 | 11 懂了,多谢多谢!
【在 C***U 的大作中提到】 : code看这里 : http://blog.sina.com.cn/s/blog_60b5450101019v71.html : 思路是这样的 : 比如你有101和110 : 那么你要把都是1的那些位拿出来,因为这些为相加会进一位,需要用& : 这个例子里面百位都是1,所以他们相加变成0,所以进以为。那么我们就取出100 然后 : 进以为得到1000 : 然后呢你需要把剩下那些没有加的拿出来,都是0的不用拿出来,因为相加是0,所以你 : 就用xor把对应位置不同的位拿出来 : 然后再把这两个相加就是需要求的和了,这里用到recursion。
|
p*****2 发帖数: 21240 | |
C***U 发帖数: 2406 | 13 我是当笑话转的。。。。有人问就说一下
哈哈
【在 p*****2 的大作中提到】 : 说实话这题有意思吗?我以前看过早就忘记了。
|
p*****2 发帖数: 21240 | 14
说实话这题有人被考到吗?
【在 C***U 的大作中提到】 : 我是当笑话转的。。。。有人问就说一下 : 哈哈
|
C***U 发帖数: 2406 | 15 不知道啊 career cup上的 应该是有人考到了吧
【在 p*****2 的大作中提到】 : : 说实话这题有人被考到吗?
|