我是靠谱客的博主 玩命雪糕,最近开发中收集的这篇文章主要介绍R进制数转换为十进制数【进制转换】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一般而言,对于任意的R进制数,有以下表示:

        An-1An-2…A1A0 . A-1A-2…A-m (其中n为整数位数,m为小数位数)

可以表示为以下和式:

        An-1×Rn-1 +…+A1×R1+A0×R0+A-1×R-1+…A-m×R-m (其中R为基数(进制数))

例如:一个十六进制的数:1F,转换为十进制的过程

                1*16^1+F(15)*16^0=16+15=31;

R进制数转换为十进制数思路:

R进制数转换为十进制数的基本方法是将R进制数的各位按权展开,然后进行十进制数相加即可。

十进制数转R进制数:十进制转R进制数详解 

例:A+B

问题描述

输入两个不超过8位的十六进制整数,求它们的和并转换为十进制数输出。

注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示或小写的英文字母a、b、c、d、e、f表示。

输入

输入包括多组测试用例,每组测试用例占1行,为两个十六进制整数A和B。

输出

对每组测试用例,输出一行。为A+B的十进制数。

输入样例

1 9

A B

a b

输出样例

10

21

21

 AC代码:

#include <iostream>
using namespace std;
int change(char c1[])//十六进制转化为十进制
{
int sum=0;//最终的十进制数
int n;//临时变量
for(int i=0;c1[i]!='';i++)
//遍历十六进制数组
{
if(c1[i]>='0'&&c1[i]<='9')
//0-9的转为整型
n=c1[i]-'0';
else if(c1[i]>='A'&&c1[i]<='Z')	//A~F转为整型的10-15
n=c1[i]-'A'+10;
else
//a~f也转为整形的10-15
n=c1[i]-'a'+10;
sum=sum*16+n;
}
return sum;
}
int main(int argc, char** argv) {
char a[10],b[10];//以字符数组形式存储十六进制
while(scanf("%s%s",a,b)!=EOF)
{
cout<<(int)change(a)+change(b); //转为十进制后再相加(注意类型转换)
}
return 0;
}

 注:如果是一个任意的进制数R,要转化成十进制数,在十六进制数转十进制数上进行一个数的修改即可:将 sum=sum*16+n;改为 sum=sum*R+n;

R进制数转10十进制的AC代码: 

#include <iostream>
using namespace std;
int change(char c1[],int r)//R进制转化为十进制
{
int sum=0;//最终的十进制数
int n;//临时变量
for(int i=0;c1[i]!='';i++)
//遍历R进制数组
{
if(c1[i]>='0'&&c1[i]<='9')
//0-9的转为整型
n=c1[i]-'0';
else if(c1[i]>='A'&&c1[i]<='Z')	//A~F转为整型的10-15
n=c1[i]-'A'+10;
else
//a~f也转为整形的10-15
n=c1[i]-'a'+10;
sum=sum*r+n;
}
return sum;
}
int main(int argc, char** argv) {
int r; //输入的进制数
cin>>r;
char a[10];//以字符数组形式存储R进制
cin>>a;
cout<<change(a,r);
return 0;
}

 如果喜欢的化,点个赞再走吧。

最后

以上就是玩命雪糕为你收集整理的R进制数转换为十进制数【进制转换】的全部内容,希望文章能够帮你解决R进制数转换为十进制数【进制转换】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部