c语言中 x=x&(x-1)实现什么功能?大侠帮忙

将x的二进制值中,最后一个1置0,其它不变。即达到从x的尾部,删除一个1的效果。二进制的减法规则中可以得知,在做x-1时,当把x写作A1B的形式,其中A为随意值,B为若干个0,可能为0个。这时x-1的值,实际上是A0C的形式,其中A值不变,C为与B相同位数的1.这样x&(x-1)的结果,根据按位与的特性,当操作数一方为0时,结果为0,于是x&(x-1) = A0B对比x原始值A1B,x&(x-1)即把最后一个1改成0.
算x的二进制中bit1的个数用int count = 0;while (x){ x=x&(x-1); count++;}
文章标签:

本文链接:https://www.u1e.cn/baike/a/c650c06b0741124d69dc80f3 [复制]

猜你喜欢

歇后语大全

还没有人回应过