1. 写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
}
2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
3. 输出一个整数的每一位。
4.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
1.写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int two(int i)
{
int count = 0;
while (i > 0)
{
if ((i & 1) == 1)
count++;
i = i >> 1;
}
return count;
}
int main()
{
int n = 0;
int temp = 0;
int num = 0;
printf("please enter a number\n");
scanf("%d", &n);
temp = n;
num= two(n);
printf("%d中含有%d个1", temp, num);
}
2. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 0;
int a[20] = { 0 };
int b[20] = { 0 };
int n = 0;
int k = 0;
printf("please a number \n");
scanf("%d", &n);
for (i = 1; i <= 32; i++)
{
if ((i % 2) != 0)
{
if ((n & 1) == 1)
a[k] = 1;
else
a[k] = 0;
k++;
}
else
{
k--;
if ((n & 1) == 1)
b[k] = 1;
else
b[k] = 0;
k++;
}
n = n >> 1;
}
for (i = 0; i < 16; i++)
printf("%d", a[i]);
printf("\n");
for (i = 0; i < 16; i++)
printf("%d", b[i]);
getchar();
}
3. 输出一个整数的每一位。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int num = 0;
int i = 0;
int count = 0;
int num1 = 0;
double k = 0;
int a[100] = { 0 };
printf("please enter a number \n");
scanf("%d", &num);
num1 = num;
while (num>9)
{
num = num / 10;
count++;
}
k = count;
for (i = 0; i <= count; i++)
{
a[i] = num1 / (pow(10.0, k));
num1 = num1 - (a[i] * pow(10.0, k));
k = k - 1;
printf("%d 位 is %d \n", i + 1, a[i]);
}
system("pause");
}
4. 编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int m = 0;
int n = 0;
int count = 0;
printf("please enter m\n");
scanf("%d", &m);
printf("please enter n\n");
scanf("%d", &n);
m = m^n;
while (m>0)
{
if ((m & 1) == 1)
count++;
m = m >> 1;
}
printf("二进制中有%d个不同", count);
}