快速解题思路

来源:百度知道 编辑:UC知道 时间:2024/05/31 11:35:03
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
?答案是?

对不同的x有不同的值
这是运算程序
#include<conio.h>
#include<iostream.h>
int func(int x)
{
int countx=0;
while(x)
{
countx++;
x = x&(x-1);

}
return countx;
}
int main()
{
int i;
for(i=0;i<19;i++)
{
cout<<func(i)<<endl;
}
getch();
return 0;
}
按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
例如:9&5可写算式如下:
00001001 (9的二进制补码)
&00000101 (5的二进制补码)
00000001 (1的二进制补码)
可见9&5=1。
按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 ,保留低八位,可作a&255运算( 255 的二进制数为0000000011111111)。

我能告诉你的就这么多了,好像无法从结果中找出什么规律来

没答案。
这是一个函数。
没看懂 x&(x-1)什么意思。
在while时 x = 0时 退出循环。
x = x&(x-1) 大概起一个自变的作用 最后 x变为0.
不为0时循环。

答案是x转换成2进制后“1”的位数

答案是x转换成2进制后“1”的个数,即有多少个1