一、常见进制的表示
进制 | 底 | 数码 |
---|---|---|
十进制 | 10 | 0,1,2,3,4,5,6,7,8,9 |
二进制 | 2 | 0,1 |
八进制 | 8 | 0,1,2,3,4,5,6,7 |
十六进制 | 16 | 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F |
二、进制转换
1.十进制转其他进制:短除法 and 连乘法
要将十进制数转为x进制(x为偶数),整数部分反复除以x并记录余数,直到商为0为止,倒序写出余数;小数部分反复乘x并记录所得结果的整数部分,直到小数部分为0为止,正序写出整数部分
例如十进制转为二进制:
顺便插入一段用C语言实现把十进制数转为二进制的代码:
#include <stdio.h>
void dectobin( int n )
{
int i,j,m,a[100],p;
for(i=0;;i++)
{
m=n%2;/*将这里的2以及下一行的2改为8,代码的功能就变成把十进制数转化为八进制数*/
p=n/2;
a[i]=m;
n=p;
if(p==0)break;
}
for(j=i;j>=0;j--)
{
printf("%d",a[j]);/*注意数组a[i]中存储的余数是正序的,要倒序输出*/
}
}
int main()
{
int n;
scanf("%d", &n);
dectobin(n);
return 0;
}
/**/
下图是在DEVC++上运行的结果:
2.其他进制转十进制:位权相加法
把各非十进制数按权展开求和
1)二进制转十进制
二进制数 | 1 | 0 | 1 | 1 | . | 1 | 1 |
位置量 | 2^3 | 2^2 | 2^1 | 2^0 | . | 2^(-1) | 2^(-2) |
各部分结果 | 8 | +0 | +2 | +1 | . | +0.5 | +0.25 |
十进制结果:11.75
2)八进制转十进制
八进制数 | 2 | 3 | . | 1 | 7 |
位置量 | 8^1 | 8^0 | . | 8^(-1) | 8^(-2) |
各部分结果 | 16 | +3 | . | +0.125 | +0.109 |
十进制结果:19.234
3)十六进制转十进制
十六进制数 | 1 | A | . | 2 | 3 |
位置量 | 16^1 | 16^0 | . | 16^(-1) | 16^(-2) |
各部分结果 | 16 | +10 | . | +0.125 | +0.012 |
十进制结果:26.137