#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m = 0;
int n = 0;
int i = 0;
int count = 0;
int arr1[32];
int arr2[32];
printf("请输入两个数:\n");
scanf("%d%d", &m, &n);
//求m的每一位
while (m)
{
arr1[i++] = m % 2;
m = m >> 1;
}
i = 0;
//求n的每一位
while (n)
{
arr2[i++] = n % 2;
n = n >> 1;
}
//将m与n的每一位进行比较
for (i = 0; i < 32; i++)
{
if (arr1[i] != arr2[i])
count++;
}
printf("共有count=%d位不同\n", count);
system("pause");
return 0;
}
读数时正序组数,先偶后奇,奇数第一位舍弃
方法2
//一个数的二进制序列为32个0,1数存储在计算机中,分别为16个奇数列,16个偶数列。用i来控制循环次数,求该位上数列的数。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, i = 0;
printf("请输入一个数:");
scanf("%d", &a);
printf("奇数列二进制序列为:\n");
for (i = 0; i<32; i += 2)
{
printf("%d ", ((a >> i) & 1));
}
printf("\n偶数列二进制序列为:\n");
for (i = 1; i<32; i += 2)
{
printf("%d ", ((a >> i) & 1));
}
printf("\n");
system("pause");
return 0;
}
读数时倒序组数,先偶后奇
优化:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, i = 0;
printf("请输入一个数:");
scanf("%d", &a);
printf("奇数列二进制序列为:\n");
for (i = 31; i >= 1; i -= 2)
{
printf("%d ", ((a >> i) & 1));
}
printf("\n偶数列二进制序列为:\n");
for (i = 30; i >= 0; i -= 2)
{
printf("%d ", ((a >> i) & 1));
}
printf("\n");
system("pause");
return 0;
}
读数时正序组数,先奇后偶