一般情况,在R进制数字系统中,采用R个基本符号(0,1,2…R-1)表示各位上的数字,采用**"逢R进一”**的运算规则,对于每一个数位i,该位上的权为R^i。R被称为该数字的基。
B | 二进制 |
---|---|
O | 八进制 |
D | 十进制 |
H | 十六进制 |
任何一个R进制数转换成十进制数时,只要**“按权展开“**即可。
将二进制数(10101.01)转换为十进制数:
10101.01 = 1x2^4 + 0x2^3 +1x2^2 + 0 x 2 + 1 + 0x2^-1+ 1x2^-2
将八进制数(307.6)转换为十进制数:
307.6 = 3x8^2 + 7x8^0 + 6x8^-1
将十六进制数(3A.C)转换成十进制数:
3A.C = 3x16^1 + 10x16^0 +12x16^-1
任何一个十进制数转换为R进制数时,要将整数和小数部分分别进行转换。
除基取余,上右下左:要转换的十进制整数去除以基数R,将得到的余数作为结果数据中各位的数字,直到上商为0为止。先得到的余数作为右边低位上的数位,下面的余数作为作为左边高位上的数位。
乘基取整,上左下右:要转换的十进制小数去乘以基数R,将得到的乘积的整数部分作为结果数据中的各位数字,小数部分继续与基数R相乘。以此类推,直到某一步乘积的小数部分为0或已得到希望的位数为止。最后,将上面的整数部分作为左边高位上的数位,下面的整数部分作为右边低位上的数位。
Note:转换过程中,可能乘积的小数部分总得不到0,即转换得到希望的位数后还有余数,这种情况下得到的是近似值。
将整数部分和小数部分分别进行转换即可。
只要把每一个八进制数字改写成等值的3位二进制数即可,且保持高低位的次序不变。
八进制数与二进制数的对应关系如下:
0 = 000 1 = 001 2 = 010 3 = 011
4 = 100 5 = 101 6 = 110 7 = 111
example:
只要把每一个十六进制数字改写成等值的4位二进制数即可,且保持高低位的次序不变。
部分16进制数与二进制数的对应关系如下:
A = 1010 B = 1011 C = 1100 D = 1101 E = 1110 F = 1111
整数部分从低位向高位每3位用一个等值的八进制数来替换,最后不足3位时在高位补0凑满3位;小数部分从高位到低位方向每3位用一个等值的八进制数来替换,最后不足3位时在低位补0凑满3位;
0.10101 = 000.101 010 = 0.52
10011.01 = 010 001.010 = 23.2
整数部分从低位向高位每4位用一个等值的十六进制数来替换,最后不足4位时在高位补0凑满4位;小数部分从高位到低位方向每4位用一个等值的十六进制数来替换,最后不足4位时在低位补0凑满4位;
11001.11 = 0001 1001.1100 = 19.C