- 写一个函数返回参数二进制中 1 的个数
比如: 15 0000 1111 4 个 1
程序原型:
int count_one_bits(unsigned int value)
{
// 返回 1的位数
}
#include<stdio.h>
#include<stdlib.h>
int count_one_bits(unsigned int value)
{
int count = 0;
while (value != 0)
{
if (value % 2 == 1)
{
++count;
}
value /= 2;
}
return count;
}
int main()
{
int ret = count_one_bits(-1);
printf("%d\n", ret);
system("pause");
return 0;
}
2.获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
#include<stdio.h>
#include<stdlib.h>
void Function(int num)
{
int i = 0;
for (i = 31; i >= 1; i -= 2)
{
printf("%d", (num >> i) & 1);
}
printf("\n");
for (i = 30; i >= 0; i -= 2)
{
printf("%d", (num >> i) & 1);
}
printf("\n");
}
int main()
{
Function(11);
system("pause");
return 0;
}
- 输出一个整数的每一位。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n = 1234;
int i;
for (i = n; i; i /= 10)
{
printf(" %d\n", i % 10);
}
system("pause");
return 0;
}
4.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#include<stdio.h>
#include<stdlib.h>
int DifferentBit(int num1, int num2)
{
int n;
n =( num1^num2);
int count = 0;
while (n != 0)
{
if (n % 2 == 1)
{
++count;
}
n /= 2;
}
return count;
}
int main()
{
printf("%d\n", DifferentBit(5, 3));
system("pause");
return 0;
}