为什么
x & -1 == x
凑字数《》
正文长度小于30个字符,请进行修改!
正文长度小于30个字符,请进行修改!
为什么
x & -1 == x
凑字数《》
正文长度小于30个字符,请进行修改!
正文长度小于30个字符,请进行修改!
下面是我的理解,供参考:
参与二进制的按位与操作时,-1的二进制就是:1111 1111 1111 1111 1111 1111 1111 1111 ,
二进制都是1,所以无论x为多少,与位都为1的一个二进制串进行按位与操作,都是他自己本身,
0(x的某一位)&1(-1的任意位)是0(x的某一位本身),1(x的某一位)&1(-1的任意位)就是1(x的某一位本身),就是无论x的二进制位串是多少与-1的二进制位串进行按位与操作,都是x本身。
#include <stdio.h>
int main(void){
int x = 2;
printf("x&-1=%d\n",(x&-1));
printf("x=%d\n",x);
printf("x&-1==x:%d\n",(x&-1)==x);
return 0;
}