【C】习题练习。

/*
*       当前版本:v1.0.0
*
*       作者:linqxxy
*
/*       完成日期:2019.3.29
/*
*	函数名称:count_one_bits
*
*	函数功能:返回参数二进制中 1 的个数 
*
*	入口参数:n
*
*	出口参数:空
*
*	返回类型:void
*/

int count_one_bits(unsigned int n)
{
	int count = 0;
	while (n)
	{
		if (n % 2 == 1)
		{
			count++;
		}
		n >>= 1;
	}
	return count;	
}
/*
*       当前版本:v1.0.1
*
*	函数名称:count_one_bits2
*
*	函数功能:返回参数二进制中 1 的个数 
*
*	入口参数:n
*
*	出口参数:空
*
*	返回类型:void
*/

int count_one_bits2(unsigned int n)
{
	int count = 0;
	for (int i = 0; i < 32; i++)
	{
		if (n&(1 << i))
		{
			count++;
		}
	}
	return count;
}

/*
*	函数名称:number
*
*	函数功能:.获取一个数二进制序列中所有的偶数位和奇数位, 
*分别输出二进制序列。 
*
*
*	入口参数:n
*
*	出口参数:空
*
*	返回类型:void
*/
void number(int n)
{
	for (int i = 31; i >=1; i-=2)
	{
			printf("%2d", ((n >> i) & 1));
	}
	printf("\n");
	for (int i = 30; i >= 0; i -= 2)
	{
		printf("%2d", ((n >> i) & 1));
	}
}
/*
*	函数名称:digits
*
*	函数功能:输出一个整数的每一位 
*
*
*	入口参数:num
*
*	出口参数:空
*
*	返回类型:void
*/
void digits(int num)
{
	int count = 0;
	int n = num;
	while (n!=0)
	{
		n/= 10;
		count++;
	}
	for (int i = 0; i < count; i++)
	{
		int j =num % 10;
		printf("%2d\n", j);
		num /= 10;
	}
}
/*
*	函数名称:difbit
*
*	函数功能:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
*
*	入口参数:num1,num2
*
*	出口参数:count
*
*	返回类型:int
*/
int difbit(int num1,int num2)
{
	int count = 0,i=0;
	i = num1 ^ num2;
	while (i)
	{
		i = i & (i - 1);
		count++;
	}
	return count;
}

猜你喜欢

转载自blog.csdn.net/qq_38606740/article/details/88903087