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>
void count_one_bits(unsigned int value)
{
int count = 0;
while (value)
{
if (value % 2 == 1)
count++;
value = value / 2;
}
printf("%d", count);
}
int main()
{
unsigned int a = 0;
printf("请输入一个整数:");
scanf("%d", &a);
count_one_bits(a);
printf("\n");
system("pause");
}
2.获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void print(int a)
{
int i = 0;
for (i = 30; i >= 0; i -= 2)
{
printf("%d", (a >> i) &1);
}
printf("\n");
for (i = 31; i >= 0; i -= 2)
{
printf("%d", (a >> i) &1);
}
}
int main()
{
int x;
printf("请输入一个整数:");
scanf("%d", &x);
print(x);
printf("\n");
system("pause");
}
- 输出一个整数的每一位。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void print(int a)
{
int arr[20] = { 0 };
int i = 0;
int count = 0;
int tmp = a;
if (a < 0)
{
a = -a;
}
while (tmp)
{
tmp /= 10;
count++;
}
for (i = 0; i < count; i++)
{
arr[i] = a% 10;
a /= 10;
}
for (i = count - 1;i >=0; i--)
{
printf("%d", arr[i]);
printf("\n");
}
}
int main()
{
int a = 0;
printf("请输入一个整数:");
scanf("%d", &a);
print(a);
printf("\n");
system("pause");
}
4.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void function(int x, int y)
{
int c = 0;
int z;
for (z = x^y; z != 0;z >>=1)
{
c += z & 1;
}
printf("%d", c);
}
int main()
{
int a = 0;
int b = 0;
printf("请输入两个整数:");
scanf("%d,%d", &a, &b);
function(a, b);
printf("\n");
system("pause");
}