1.写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
}
注意:此处输入为无符号数,才能使用此方法.若为有符号数,则输入负数时不可用此函数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int count_one_bits(unsigned int value) //无符号数
{
int count = 0;
while (value)
{
if (value % 2 == 1) // 取数字的二进制序列中的一个 1
{
count++;
}
value /= 2; //减掉所得的一个1
}
return count;
}
int main()
{
int num = 0;
printf("请输入一个数:");
scanf("%d", &num);
int count = count_one_bits(num);
printf("二进制序列中1的个数count = %d\n", count);
system("pause");
}
2.获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void parity(int num)
{
int i = 0;
//偶数位输出
printf("偶数位数列为: ");
for (i = 0; i < 32; i += 2){ //通过字节的移动得到每一位的数值
printf("%d ", (num >> i) & 1);
}
printf("\n");
//奇数位输出
printf("奇数位数列为: ");
for (i = 1; i < 32; i += 2){
printf("%d ", (num >> i) & 1);
}
printf("\n");
}
int main()
{
int num = 0;
printf("请输入一个数:");
scanf("%d", &num);
parity(num);
system("pause");
}