#include<iostream>
#include<vector>
#include<cstdio>
#include<queue>
#include<stack>
#include<cctype> //有isdigit函数,用来判断是否是十进制数
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'; //和日常在纸上实现除法的做法一样,把字符串从高到低逐位除以除数。如果某位不能整除,那么就保留它除以除数的余数,余数乘以10后和低一位一起进行处理。
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--)
printf("%d",binary[i]);
cout<<endl;
}
return 0;
}
很长的十进制数转为二进制
最新推荐文章于 2024-08-22 17:27:46 发布