您的位置:首页 > 其它

进制转换

2008-07-26 13:37 302 查看
进制转换的基本算法是

n进制与十进制转换

如二进制

1011

1*2^3+0*2^2+1*2^2+1*2^0=11其它进制也同理

2^x为2的x次方

十进制与n进制转换

如254转为16进制

254%16 14(E)

254/16=15

15%16 15(F)

15/16=0结束

所以为FE

#include<iostream>

#include<string>

#include<stack>

using namespace std;

int getn(char x){//123456789ABCDFE这些,转为0-15的数字

char getc(int x){//0-15的数字转为 123456789ABCDFE这些

int main(){

int f,t;

string x;

while(cin>>f>>x>>t){

int temp=0;

stack<char> s;

bool isf=false;

for(int i=0;i<x.length();i++){//这个 就是f进制转十进制 的循环

if(x[i]=='-') //负号的处理,可以不计

isf=true;

else

temp=temp*f+getn(x[i]);//计算 十进制

}

if(temp==0){//对0的处理

s.push('0');

isf=false;

}

while(temp){//因为余数要从后前前输出,所以用个栈

s.push(getc(temp%t));

temp/=t;

}

if(isf)//如果是负的输出负号

cout<<"-";

while(!s.empty()){//输出结果

cout<<s.top();

s.pop();

}

cout<<endl;

}

}

现在大家都熟悉了进制转换的放法了。现在又有难题让你解决了。

输入一个N(2<=N<=16)进制的数a,把它转换成M(M<=16)进制的数。

有多组测试数据,每组测试数据占一行。包括三个数N,a,M。

输出转化的M进制的数.

10-15 用大写字母A-F表示。

样例输入:

2 1010 10

16 EF 10

样例输出:

10

239
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: