问题描述:
获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
问题分析:
方法一:
1、从键盘读入一个数;
2、换算成二进制并把二进制序列存进数组;
3、i=0;i+=2;循环从数组取得偶数位;
4、i=1;i+=2;循环从数组取得奇数位;
方法二:
1、从键盘读入一个数;
2、((a >> i) & 1)取出每一位;
3、i=30;i>=0; i-=2;循环从数组取得偶数位;
4、i=31;i>=1; i-=2;循环从数组取得奇数位;
源代码:
方法一:(数组,循环)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[32] = { 0 };
int i = 0;
int num = 0;
printf("请输入一个数:");
scanf("%d", &num);
for (i = 31; num != 0; i--)//换算及输出二进制
{
a[i] = num % 2;
num /= 2;
}
printf("二进制为:");
for (i = 0; i < 32; i++)
{
printf("%d", a[i]);
}
printf("\n");
printf("奇数位为:");//输出奇数位
for (i = 1; i <= 31; i += 2)
printf("%d", a[i]);
printf("\n");
printf("偶数位为:");//输出偶数位
for (i = 0; i <= 30; i += 2)
printf("%d", a[i]);
printf("\n");
return 0;
}
方法二:(操作符)
#include <stdio.h>
#include <windows.h>
#pragma warning (disable :4996)
int main()
{
int a = 0;
printf("请输入一个数:");
scanf("%d", &a);
int i = 0;//偶数
for (i = 31; i >= 1; i -= 2)
{
printf("%d", (a >> i) & 1);
}
printf("\n");
//奇数
for (i = 30; i >= 0; i -= 2)
{
printf("%d", (a >> i) & 1);
}
printf("\n");
system("pause");
return 0;
}