int foo (int x) return x & -x
0
1
2
4
2)负数的左移:跟正整数左移一样,右边补0,一直左移的话,最后就是0啦。-2<<2 为-4 ; -2<<31为0
这题其实非常简单,x是原码存储,-x是补码存储,补码是反码+1,2^31-3最低位肯定是1反码变0,+1之后为1,没有造成进位,那么其他位上都还是取反状态,与运算之后都为零,只有第一位,与运算之后为1,所以结果为1
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题