3000位二进制数转换为十进制数

作者在 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;
}
C++ | 阅读 1776 次
文章评论,共0条
游客请输入验证码
最新评论