写一个函数返回参数二进制中 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)
{
// 返回 1的位数
int count = 0;
while (value){
if ((value & 1) == 1)
count++;
value >>= 1;
}
printf("1的个数为: %d", count);
return count;
}
int main(){
int value;
printf("请输入您所需要计算的数字: ");
scanf("%d", &value);
count_one_bits(value);
system("pause");
return 0;
}
2.获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int count_bits(unsigned int* value)
{
int i, j, num;
num = *value;
printf("奇数位为: \n");
for (i = 30; i >=0; i -= 2){
int count1 = *value & 2;
if (count1)
printf("1");
else
printf("0");
*value >>= 2;
}
printf("\n");
printf("偶数位为: \n");
for (j = 31; j >= 1; j -= 2){
int count2 = num & 1;
if (count2)
printf("1");
else
printf("0");
num >>= 2;
}
printf("\n");
}
int main(){
int value;
printf("请输入您所需要计算的数字: ");
scanf("%d", &value);
count_bits(&value);
system("pause");
return 0;
}
- 输出一个整数的每一位。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int Print(int value){
int num1,num2;
num1 = value % 10;
if (num1 == value)
printf("%d\n", value);
else{
num2 = value / 10;
printf("%d\n", num1);
return Print(num2);
}
}
int main(){
int value;
printf("请输入您所需要计算的数字: ");
scanf("%d", &value);
Print(value);
system("pause");
return 0;
}
4.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(){
int count = 0, i;
int value1,value2;
printf("请输入您所需要计算的数字: ");
scanf("%d%d", &value1,&value2);
for (i = 0; i <= 31; i++){
if ((value1 & 1) != (value2 & 1))
count++;
value1 >>= 1;
value2 >>= 1;
}
printf("%d", count);
system("pause");
return 0;
}