[C/C++]整数进制转换(代码+原理+总结) | 您所在的位置:网站首页 › c语言将整数转换为2进制 › [C/C++]整数进制转换(代码+原理+总结) |
文章目录
(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 实验室设备网 版权所有 |