描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入描述:
多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)
输出描述:
每行输出对应的二进制数。
示例1
输入:
0
1
3
8
输出:
0
1
11
1000
示例代码:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string Divide(string str,int x)//字符串除法
{
int remainder=0;//保存余数
for(int i=0;i<str.size();++i)
{
int current=remainder*10+str[i]-'0';
str[i]=current/x+'0';
remainder=current%x;
}
int pos=0;
while(str[pos]=='0')//寻找首个非0下标
{
pos++;
}
return str.substr(pos);//删除前置多余的0
}
int main()
{
string str;
while(cin>>str)
{
vector<int>binary;
while(str.size()!=0)
{
int last=str[str.size()-1]-'0';//最低位的值
binary.push_back(last%2);//取模运算
str=Divide(str,2);//整除运算
}
for(int i=binary.size()-1;i>=0;--i)
cout<<binary[i];
cout<<endl;
}
}