为什么x & -1 == x (语言-c语言)

为什么
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;
} 

-1就是0xFFFFFFFF,就是0b1111111111111111111111111111111111
所以任何数与上它,都是等于自身