作者在 2014-06-05 15:10:59 发布以下内容
#include<iostream>
#include<fstream>
#include<sstream>
using namespace std;
#define N 1000
void stradd(char *a,char *b)
{
int adder=0,new_adder,sum;
for(int i=0;i<N;i++){
sum=a[i]+b[i]-'0'-'0';
new_adder=(sum+adder)/10;
a[i]=(sum+adder)%10+'0';
adder=new_adder;
}
}
void strpow(int n,char *a)
{
a[0]='1';
for(int i=1;i<N;i++)
a[i]='0';
for(int i=0;i<n;i++)
stradd(a,a);
}
void print_str(char *a)
{
int i=N-1;
while(a[i]=='0') i--;
printf("%d\n",i);
while(i>=0) cout<<a[i--];
}
int main(){
char a[N],result[N];
memset(a,'0',sizeof(char)*N);
memset(result,'0',sizeof(char)*N);
string s;
ifstream in("data.txt");
getline(in,s);
cout<<"binary:"<<endl;
cout<<s<<endl;
for(int i=s.length()-1,j=0;i>=0;i--,j++)
{
if(s.at(i)=='1') {
memset(a,'0',sizeof(char)*N);
strpow(j,a);
stradd(result,a);
}
}
cout<<"decimal:"<<endl;
print_str(result);
cout<<endl;
}