我尝试在C语言中计算整数值中设置的位数。但是对于某些值,它显示了正确的位设置计数,而对于某些值则没有。
以下是程序代码:
512的位值计数输出显示为零,如果使用的值是511,则计数显示为9。
请帮我纠正程序。
以下是程序代码:
int main()
{
int a = 512, i = 0, j = 1, count = 0, k = 0;
for (i = 0; i < 31; i++)
{
if (k = a & j)
{
count++;
j = j << 1;
}
}
printf("the total bit set count is %d", count);
}
512的位值计数输出显示为零,如果使用的值是511,则计数显示为9。
请帮我纠正程序。
int
不一定有32位。而且通常情况下,对于位移操作,最好使用无符号整数。 - too honest for this site