基数转换

不同基数间的整数值互相转换的方法

1、由非十进制数转换为十进制数

由八进制、十六进制二进制数向十进制数转换

十进制数的每一位都是10的指数幂。所以1998可以解释为:

    1998.123 = 1 x  10 + 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位)。

猜你喜欢

转载自www.cnblogs.com/zhaoyunt/p/11453876.html