这是2014阿里研发笔试题
怎么解?
步骤:
【1】2^31-3这个表达式看成2的31平方减3就错了。实质^是异或 ,—比^优先级高,所以2^(31-3)=2^28=30
【2】foo(30):
return 30 & -30;
30:0001 1110
-30补码表示:1110 0010(取反+1)
0001 1110
& 1110 0010
0000 0010 (2)
注: 32bit ,4个字节表示,前三个字节我省略没写出。因为取反+&运算以后为0。
所以选C 2
补充:如果我写的有bug,欢迎大家指正。