如下函数,在32bit系统foo(2^31-3)的值是:
Int foo(int x)
{
return x&-x;
}
A: 0 B: 1 C:2 D:4
2与31异或,10与11111异或后得11101,3为11,11101-11=11010
-11010相当于11010取反加1为00110
11010&00110=10,结果为2
******************************************************************************
验证:
#include<stdio.h>
#include<math.h>
int fun(int x)
{
return x&-x;
}
int main()
{
printf("%d\n",fun(2^31-3));
printf("%d\n",fun(pow(2.0, 31)-3));
return 0;
}
2
1