[C/C++]整数进制转换(代码+原理+总结) 您所在的位置:网站首页 c语言将整数转换为2进制 [C/C++]整数进制转换(代码+原理+总结)

[C/C++]整数进制转换(代码+原理+总结)

2023-09-10 17:27| 来源: 网络整理| 查看: 265

文章目录 (1)其他进制转换为十进制原理代码 (2)十进制转换为其他进制原理代码 (3)总结

(1)其他进制转换为十进制 原理

P进制x上的每一个位对十进制而言表达的含义都不同 从右到左,各表示个位,P位,P2位,…,Pn位 例如: 十进制123

3表个位,2表十位,1表百位

八进制123

3表个位,2表8位,1表64位

二进制101

1表个位,0表2位,1表4位(从右到左)

所以 P进制x=d1d2…dn 换个形式x = d1*Pn-1 + d2*Pn-2 +…+ dn-1*P + dn 在使用十进制的乘法和加法后,x就转换成十进制数了

代码

1.用十进制数储存r进制数x 只能从右往左操作位数

int rToTen(int n,int r){ //将r进制转为10进制,n是该r进制的十进制int表示 int ans=0;//存放结果 product=1;//存放位数的十进制含义,一开始表示1 while(n){//n=0时退出循环 ans += (x%10) * product; //x%10取出个位数 x /= 10; // x去掉个位数,并存放于x中 product*=r; //得到下一位数 } return ans; }

2.用字符串储存r进制数n 从右往左

int rToTen(string n,int r){ //将r进制转为10进制,n是该r进制的字符串表示 int i = n.length()-1; int ans = 0;//存放结果 int product=1;//存放位数的十进制含义 while(i>=0){//i从后往前(从右往左)遍历n ans+= (n[i]-'0')*product; product*=r;//更新下一个位数的十进制数含义 i--; } return ans; }

从左往右

int rToTen(string n,int r){ //将r进制转为10进制,n是该r进制的字符串表示 int len = n.length(); int ans = 0;//存放结果 int i = 0; while(i ans[len++]=y%r; y/=r; }while(y); //ans[len-1]到ans[0]即为r进制y (3)总结

说白了,就是操作位数,或取出,或移位。

x % P = 得到个位数 x / P = 去掉个位数

值得注意的是 只有P进制的尺度下 才能直观直接地看到/P,*P的位移,%P的取值 但不妨碍我们抽象地使用



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有