二进制简单题目归纳

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;
}

猜你喜欢

转载自blog.csdn.net/cjh1459463496/article/details/83475137