x=x|(x+1);和x=x&(x-1)?
例:如果x=,下面函数的返回值是()?
{
int n=0;
while((x+1))
{
n++;
x=x|(x+1);
}
return n;
}
答案:23
(1)x&(x-1)统计1的个数,x|(x+1)统计0的个数
(2)这个作用是对整型中0的个数进行统计,x=x|(x+1);的作用是每次循环把x的二进制中从右往左数的最后一位0变成1,直道变成全1的时候x+1就溢出为全0,循环结束。
的二进制是0000 0000 000 0000 0000 0111 1101 1110,所以结果是23
还有类似的题目,迭代式为x=x&(x-1),作用是统计x二进制中1的个数
如果觉得《x=x|(x+1);和x=x(x-1)?》对你有帮助,请点赞、收藏,并留下你的观点哦!