您的位置:首页 > 其它

1.写一个函数返回参数二进制中 1 的个数;2..获取一个数二进制序列中所有的偶数位和奇数位;3. 输出一个整数的每一位;4.两个int整数的二进制表达中,有多少个位不同

2017-10-26 21:55 866 查看
//1.写一个函数返回参数二进制中 1 的个数
#include <stdio.h>
int  count_one_bits(unsigned int value)
{
int count = 0;
while (value)
{
value = value&(value >> 1);
count++;
}
return count;
}
int main()
{
unsigned int value = 15;
int c = count_one_bits(value);
printf("%d中1的个数为 : %d\n", value,c);
system("pause");
return 0;
}

//2.获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
#include <stdio.h>
void search(int a[], int num)
{
for (int i = 0; i < 16; i++)
{
a[i] = num & 1;
num = num >> 2;
}
}
void Output(int a[])
{
for (int i = 15; i >= 0; i--)
{
printf("%d ", a[i]);
}
}
int main()
{
int num = 249;
int x, y;
int a[16] = { 0 };
search(a, num);
printf("奇数位:>");
Output(a);
printf("\n");
num = num >> 1;
search(a, num);
printf("偶数位:>");
Output(a);
printf("\n");
system("pause");
return 0;
}

//3. 输出一个整数的每一位。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int num = 0;
int a[20] = { 0 };
char str[20];
scanf("%d", &num);
_itoa(num, str, 10);
int len = strlen(str);
for (int i = 1;i<=len; i++)
{
a[i] = num % 10;
num = num / 10;
}
for (int i =len; i >0; i--)
{
printf("%d ", a[i]);
}
system("pause");
return 0;
}
//4.编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
#include <stdio.h>
int main()
{
int a = 1999, b = 2299;
int s = a^b;
int count = 0;
while (s)
{
s = s&(s - 1);
count++;
}
printf("%d 和 %d 有 %d 位不同\n", a, b, count);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐