进制转换
八进制转十进制
-
如:O1234 = 1*(83)+2*(82)+3*(81)+4*(80)=2322
-
八进制对于十进制来说:八进制的位数对应着8的幂次,位上的数值对应着权值。
十进制转八进制
-
综上只需求出10进制有几个8的各次幂带权相加即可。
-
如:由阶梯除法
8 100 4 8 12 4 8 1 1 - 0 - 因为第二行的4意味着12个8中含有1个8的平方+4个8, 有:100 = O144
-
整数部分除八取余,小数部分乘八取整。
利用递归可以很快实现:
#include <stdio.h>
void change10_8(int n)
{
if (n == 0)
return;
else
{
change10_8(n / 8); /*由此递归*/
printf("%d", n % 8);
}
}
int main() {
int n;
scanf("%d",&n);
change10_8(n);
return 0;
}