在bitcount.c中编写一个名为bitCount()的函数,该函数返回1中的1位数 其无符号整数参数的二进制表示。记得填写身份证明 信息并运行完成的程序以验证正确性。
/*
Name:
Lab section time:
*/
#include <stdio.h>
int bitCount (unsigned int n);
int main ( ) {
printf ("# 1-bits in base 2 representation of %u = %d, should be 0\n",
0, bitCount (0));
printf ("# 1-bits in base 2 representation of %u = %d, should be 1\n",
1, bitCount (1));
printf ("# 1-bits in base 2 representation of %u = %d, should be 16\n",
2863311530u, bitCount (2863311530u));
printf ("# 1-bits in base 2 representation of %u = %d, should be 1\n",
536870912, bitCount (536870912));
printf ("# 1-bits in base 2 representation of %u = %d, should be 32\n",
4294967295u, bitCount (4294967295u));
return 0;
}
int bitCount (unsigned int n) {
/* your code here */
}
有人可以帮我理解究竟是什么问题吗? bitCount是否应该将输入的十进制转换为二进制,然后计算1的数量?
答案 0 :(得分:0)
该函数没有“十进制”输入,它正在传递普通(unsigned
,似乎)数字。它们将以二进制形式存储在大多数典型的计算机上。
我想它会返回这些值,例如:
bitcount(0)
- &gt; 0(因为0没有设置位)bitcount(1)
- &gt; 1(因为1是1 2 二进制)bitcount(2)
- &gt; 1(因为2是10 2 二进制)bitcount(3)
- &gt; 2(因为3是11 2 二进制)在调用函数的源代码中给出的数字的基数并不重要,一旦程序运行,它将被转换为二进制。你可以像bitcount(01)
(八进制)或bitcount(0x80)
那样调用它,它仍然只是得到一个unsigned int
,其值可以假设以二进制形式存储。
bitcount(x)
的递归算法就是这样:
请注意,伪代码不会以任何特定方式(无论是二进制还是其他方式)假设数字x
存储,它对数字本身起作用。伪代码中的文字是十进制的,但这只是符号。