4. 写一个函数,对给定整数的二进制表示进行描述
如:给定整数131,其二进制表示为10000011,要求函数输出以下结果:
1: 2
0: 5
1: 1
表示从最低位开始,包含2个1,5个0,1个1。
参考上一题,确定本函数的名字,入口出口及返回值,并实现本函数
// js.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void ParseInt(int n);
int _tmain(int argc, _TCHAR* argv[])
{
int n;
cin >> n;
ParseInt(n);
system("pause");
return 0;
}
void ParseInt(int n)
{
int cnt =0;
int temp =-1;
for(int i=0;i<8;++i)
{
if(n&(1<<i))
{
if(temp < 0) //第一次
{
temp=1;
++cnt;
}
else if(temp != 1)//遇到不同的数
{
cout << "0:" << cnt << endl; //打印上一段的结果
temp=1;
cnt=1;
}
else
{
cnt++;
}
}
else
{
if(temp < 0)
{
temp =0;
++cnt;
}
else if(temp != 0)
{
cout << "1:" << cnt << endl; //打印上一段的结果
temp=0;
cnt=1;
}
else
{
cnt++;
}
}
}
cout<<temp<<':'<<cnt << endl;
}