不同基数间的整数值互相转换的方法
1、由非十进制数转换为十进制数
由八进制、十六进制二进制数向十进制数转换
十进制数的每一位都是10的指数幂。所以1998可以解释为:
1998.123 = 1 x 103 + 9 x 102 + 9 x 101 + 8 x 100 + 1 x 10-1 + 2 x 10-2 + 3 x 10-3
1000 100 10 1 0.1 0.01 0.001
将这个思路应用于八进制数、十六进制数和二进制数上,就能轻松地将这些数转换为十进制数。
举例来说,将八进制数123转换为十进制数的步骤如下:
123.205 = 1 x 82 +2 x 81 +3 x 80 + 2 x 8-1 + 0 x 8-2 + 5 x 8-3
=83.259765265
而将十六进制数1FD转换成为十进制数的步骤如下:
1FD .01= 1 x 162 + 15 x 161 + 13 x 160 + 0 x 16-1 + 1 x 16-2
=509.00390625
而将二进制数101转换为十进制数的步骤如下:
101.01 = 1 x 22 + 0 x 21 + 1 x 20 + 0 x 2-1 + 1 x 2-2
=5.25
2、由十进制数转换为非十进制数
基本原则:
1:整数部分与小数部分分别转换;
2:整数部分采用除基数(转换为2进制则每次除2,转换为8进制每次除8,以此类推)
取余法,直到商为0,而余数作为转换的结果,第一次除后的余数为最低为,最后一次的余数为最高位。
3:小数部分采用乘基数(转换为2进制则每次乘2,转换为8进制每次乘8,以此类推)
取整法,直至乘积为整数或达到控制精度。
以下具体说明:
例如,将十进制数57.625转换为二进制数:
由十进制数(整数部分)向八进制数、十六进制数、二进制数转换:
二进制数有以下规律:
偶数的末位数字为0;
奇数的末位数字为1;
也就是说,用要转换的数除以2所得的余数就是末位数字的值。
用57除以2 ,商为28, 余数为1.再用商28除以2,得到商14,和余数0.反复这一步骤,直到商为0为止。将所有余数逆向排列就得到结果111001.
当然,转换为十进制数、八进制数、十六进制数的步骤是完全相同的。只要将除数改为8或者16,最后排列余数就行了。
例如,十进制数57转换为八进制数为71,转换为十六进制数为39.
由十进制数(小数部分)向八进制数、十六进制数、二进制数转换:
例如,将十进制数0.625转换为二进制数:
用0.625乘以2 ,积为1.250, 取整数部分为1,再用小数部分0.250乘以2,得到积为0.5,取整数部分为0,和小数0.5。重复这一步骤,直到乘积为整数或者达到控制精度为止。将所有整数顺序排列就得到结果0.101.
当然,转换为十进制数、八进制数、十六进制数的步骤是完全相同的。只要将乘数改为8或者16,最后排列整数就行了。
例如,十进制数0.625转换为八进制数为0.5,转换为十六进制数为0.10.
综上,十进制数57.625转换为二进制数为111001.101
专题:
二进制、八进制、十六进制的基数转换
基本原则:
1:将二进制转换成八进制按3位一组进行;
2:将二进制转换成十六进制按4位一组进行;
3:分组时如位数不够,整数部分在最左边补0,小数部分在最右边补0;
4:八进制转二进制,将1位八进制转换为3位二进制;
5:十六进制转二进制,将1位十六进制转换为4位二进制。
如下表,3位二进制数和一位八进制数是互相对应的(即3位二进制数000-111,就是1位的八进制数0-7).
二进制数 | 八进制数 |
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
如下表,4位二进制数和一位十六进制数是互相对应的(即4位二进制数0000-1111,就是1位的十六进制数0-F).
二进制数 | 十六进制数 | 二进制数 | 十六进制数 |
0000 | 0 | 1000 | 8 |
0001 | 1 | 1001 | 9 |
0010 | 2 | 1010 | A |
0011 | 3 | 1011 | B |
0100 | 4 | 1100 | C |
0101 | 5 | 1101 | D |
0110 | 6 | 1110 | E |
0111 | 7 | 1111 | F |
利用这一特性,可以快速的进行二进制和八进制、二进制和十六进制之间的转换。
例如,将二进制数0111101010011100转换为八进制数,之需要每3位隔开一下,并分别转换为1位的八进制数。
00 0-111-101-010-011-100
0 7 5 2 3 4
例如,将二进制数0111101010011100转换为十六进制数,之需要每4位隔开一下,并分别转换为1位的十六进制数。
0111-1010-1001-1100
7 A 9 C
另外,若要将八进制数转换为二进制数,只需要反过来操作即可(将八进制的1位转换为二进制的3位)。
若要将十六进制数转换为二进制数,只需要反过来操作即可(将十六进制的1位转换为二进制的4位)。