1.获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int i=0,j=0;
char arr1[16]; //定义2个数组来存放二进制序列
char arr2[16];
int num=0;
scanf("%d",&num);
for(i = 0; i < 32; i += 2)
{
arr1[j] = ((num >> i) & 1); //奇数位
j++;
}
for(i = 1,j=0; i < 32; i += 2)
{
arr2[j] = ((num >> i) & 1); //偶数位
j++;
}
printf("奇数位为:"); //输出数组里的二进制奇数序列
for (i = 15; i >= 0; i--)
{
printf("%d",arr1[i]);
}
printf("\n");
printf("偶数位为:"); //输出数组里的二进制偶数序列
for (i = 15; i >= 0; i--)
{
printf("%d",arr2[i]);
}
return 0;
}
这道题是看别人博客后写的,不是很会做.
2. 输出一个整数的每一位。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
void number_every(int n)
{
if(n>9)
{
number_every(n/10);
}
printf("%d ",n%10);
}
int main()
{
int n;
cin>>n;
number_every(n);
return 0;
}
3.编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
void number_expres(int x,int y)
{
int cnt=0;
for(int i=0;i<32;i++)
{
if(x%2!=y%2)
cnt++;
x/=2;
y/=2;
}
cout<<cnt<<endl;
}
int main()
{
int x,y;
cin>>x>>y;
number_expres(x,y);
return 0;
}