输入一个大数将其转化为二进制输出
2017-09-28 20:19
120 查看
将一个大数转化为2进制输出
#include <iostream>
#include <cstring>
#include <ctype.h>
#include <vector>
#include <sstream>
using namespace std;
vector<int> turn(string X)
{
int M=10,N=2;
vector<int> vec;
int data[1010]; //保存M进制下的各个位数
int output[1010]; //保存N进制下的各个位数
memset(output,0,sizeof(output));
for(int i=0;i<X.length();i++)
{
if(isalpha(X[i]))
data[i] = X[i] - 'A' + 10;
else
data[i] = X[i] - '0';
}
int sum = 1;
int d = 0;
int len = X.length();
int k = 0;
while(sum){
sum = 0;
for(int i=0;i<len;i++)
{
d = data[i] / N;
sum += d;
if(i == len-1)
{
output[k++] = data[i] % N;
}
else{
data[i+1] += (data[i] % N) * M;
}
data[i] = d;
}
}
if(k == 0)
{
output[k] = 0;
k--;
}
if(k == -1)
{
cout<<0<<endl;
}
else{
for(int i=0;i<k;i++)
{
if(output[k-i-1] > 9)
//cout<<(char)(output[k-i-1]+ 'a' - 10);
vec.push_back((char)(output[k-i-1]+ 'a' - 10));
else
// cout<<output[k-i-1];
vec.push_back(output[k-i-1]);
}
}
return vec;
}
int main()
{
string str;
cin>>str;
vector<int> vecs;
vecs=turn(str);
vector<int>::iterator iter;
for(iter=vecs.begin();iter!=vecs.end();++iter)
cout<<*iter;
return 0;
}
#include <iostream>
#include <cstring>
#include <ctype.h>
#include <vector>
#include <sstream>
using namespace std;
vector<int> turn(string X)
{
int M=10,N=2;
vector<int> vec;
int data[1010]; //保存M进制下的各个位数
int output[1010]; //保存N进制下的各个位数
memset(output,0,sizeof(output));
for(int i=0;i<X.length();i++)
{
if(isalpha(X[i]))
data[i] = X[i] - 'A' + 10;
else
data[i] = X[i] - '0';
}
int sum = 1;
int d = 0;
int len = X.length();
int k = 0;
while(sum){
sum = 0;
for(int i=0;i<len;i++)
{
d = data[i] / N;
sum += d;
if(i == len-1)
{
output[k++] = data[i] % N;
}
else{
data[i+1] += (data[i] % N) * M;
}
data[i] = d;
}
}
if(k == 0)
{
output[k] = 0;
k--;
}
if(k == -1)
{
cout<<0<<endl;
}
else{
for(int i=0;i<k;i++)
{
if(output[k-i-1] > 9)
//cout<<(char)(output[k-i-1]+ 'a' - 10);
vec.push_back((char)(output[k-i-1]+ 'a' - 10));
else
// cout<<output[k-i-1];
vec.push_back(output[k-i-1]);
}
}
return vec;
}
int main()
{
string str;
cin>>str;
vector<int> vecs;
vecs=turn(str);
vector<int>::iterator iter;
for(iter=vecs.begin();iter!=vecs.end();++iter)
cout<<*iter;
return 0;
}
相关文章推荐
- 随意输入一个正整数n, 在输入转化的进制数,将转化后的序列输出,并判断某一个数字的个数,这里给的是二进制的例子
- 10--输入一个十进制的整数,转化为二进制,输出有多少个1
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 2.2题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
- 将一个任意输入的10进制数转化为16进制形式输出
- 输入一个十进制正整数,将其转换成二进制、八进制、十六进制数输出
- 2.3题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
- 2.4 题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
- C语言实验——输入一个整数的小写金额值,转化为大写金额值并输出
- 输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
- 位运算训练03—输入一个整数a,再输入两个整数p1,p2(p1,p2<32);将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
- 面试题:输入一个整数,输出该整数二进制中1的个数。
- java实现将一个键盘输入的阿拉伯数字转化成中文输出
- 位运算训练04—输入一个整数a,再输入两个整数p(p<32),v(0|1);将该整数a的p位设置为v,输出修改后的该整数的二进制表示
- 将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一百二拾三万四千五百六拾七)?
- 4.输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
- 将一个键盘输入的数字转化成中文输出。(例如:输入:1234567 输出:一百二拾三万四千五百六拾七)
- P123.36(请编写一个函数printdate(int year,int month,int day ),将输入的三个数字转化成英语纪年输出。)
- C语言实验:输入一个整数的小写金额值,转化为大写金额值并输出
- 将一个任意输入的10进制数转化为16进制形式输出