程序问题:i &=i-1,这一句什么意思啊?

来源:百度知道 编辑:UC知道 时间:2024/05/25 13:39:55
int i=9999;
int x=0;
while(i>0)
{x++;

x++;
i &=i-1;

}
cout<<x<<" "<<i;

&(位与)是C语言中的运算符按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

i &=i-1; 与i =i&(i-1);是等效的