1.
返回参数二进制中 1 的个数。
比如:
15
0000 1111
4 个 1
代码如下:
//返回参数二进制中1的个数
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int count_one_bits(int value)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
if (((value >> i) & 1) == 1)
{
count++;
}
}
return count;
}
int main()
{
printf("请输入一个数字:\n");
int value = 0;
scanf("%d", &value);
printf("二进制中1的个数: %d\n",count_one_bits(value));
system("pause");
return 0;
}
2.
获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void Print(int n)
{
int i = 0;
for (i = 31; i > 0; i -= 2)
{
printf("%d", (n >> i) & 1);
}
printf("\n");
for (i = 30; i >= 0; i -= 2)
{
printf("%d", (n >> i) & 1);
}
}
int main()
{
printf("请输入一个数字:\n");
int value = 0;
scanf("%d", &value);
Print(value);
system("pause");
return 0;
}
3.
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
代码如下:
//输出两个数不同的比特位个数
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int differ1(int m,int n)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
if (((m >> i) & 1) != ((n >> i) & 1))
{
count++;
}
}
return count;
}
int main()
{
printf("请输入两个数字:\n");
int m = 0,n = 0;
scanf("%d %d", &m,&n);
printf("不同的bit位数为:%d\n", differ1(m, n));
system("pause");
return 0;
}