在我正在阅读的第 2 章中学习 C“The C 编程语言”的书中。
这本书解释了按位运算,它有一个函数可以显示整数中有多少位。
下面是函数...
int Bitcount(unsigned x){
int b;
for(b = 0; x != 0; x >>=1){
if(x & 01){
b++
}
}
return b;
}
然后给我们一个练习来准确地说明这一点。
“在二进制补码系统中,x &= (x-1) 删除 x 中最右边的 1 位;解释原因。使用此观察来编写更快的 Bitcount 版本”。
问题是我真的无法理解“x &= (x-1)” 是如何工作的?谁可以给我解释一下这个?或将我发送到可以更好地帮助我理解的资源?我一直试图弄清楚这一点,但我真的做不到。
感谢您提供的任何帮助。
另外,如果我的问题有任何问题,这是我的第一篇文章,所以请帮助我把我的问题做得更好。