计算机系统基础知识——进制转换(二进制、八进制、十进制、十六进制)

前言:计算机系统中常用的进位数制有二进制、八进制、十进制、十六进制,对于任何一种进位数制,其表示的数都可以写成按权展开的 多项式。


1. 十进制与二进制的相互转换

1.1 十进制转二进制

  十进制数转换为二进制数的方法是:

  • 整数部分和小数部分分别转换,然后合并
  • 以小数点为分隔符,整数部分转换方向为按位从右往左;小数部分转换方向为按位从左往右
  • 整数部分转换方法为除2取余;小数部分转换方法为乘2取整

例1:把十进制数175.71875转换为相应的二进制数

整数部分:

算式 余数
175 / 2 87 1
87 / 2 43 1
43 / 2 21 1
21 / 2 10 1
10 / 2 5 0
5 / 2 2 1
2 / 2 1 0
1 / 2 0 1

  当算出商为0时,停止计算。将得到的余数部分,依次按照从右往左排列,整数部分为10101111。

小数部分:

算式 乘积
0.71875 * 2 1.4375
0.4375 * 2 0.875
0.875 * 2 1.75
0.75 * 2 1.5
0.5 * 2 1.0

  当计算出小数部分为0时,停止计算。将得到的乘积部分依次按照从左往右排列小数部分为10111。

即: 17 5 10 = 1010111 1 2 , 0.7187 5 10 = 0.1011 1 2 175.7187 5 10 = 10101111.1011 1 2 \text{即:}175_{10} =10101111_2\text{,}0.71875_{10} = 0.10111_{2} \\ 175.71875_{10} = 10101111.10111_2 即:17510=101011112,0.7187510=0.101112175.7187510=10101111.101112

1.2 二进制转十进制

  二进制数转换为十进制数的做法是:将二进制数的每一位数乘以它的权再相加,即可求得对应的十进制数值

例2:把二进制数100110.101转换成相应的十进制数
10011.1 0 2 = 1 × 2 5 + 0 × 2 4 + 0 × 2 3 + 1 × 2 2 + 1 × 2 1 + 0 × 2 0 + 1 × 2 − 1 + 0 × 2 − 2 + 1 × 2 − 3 = 32 + 0 + 0 + 4 + 2 + 0 + 0.5 + 0 + 0.125 = 38.625 \begin{aligned} 10011.10_2 &= 1 \times2^5 + 0 \times 2^4 + 0 \times 2^3 + 1\times2^2 + 1\times2^1 + 0\times2^0 + 1\times2^{-1} + 0\times2^{-2} + 1\times2^{-3} \\ &=32+0+0+4+2+0+0.5+0+0.125 \\ &=38.625 \end{aligned} 10011.102=1×25+0×24+0×23+1×22+1×21+0×20+1×21+0×22+1×23=32+0+0+4+2+0+0.5+0+0.125=38.625


2. 八进制与十进制、二进制的相互转换

2.1 八进制与十进制互相转换

  十进制转八进制的做法和十进制转二进制类似:

  • 整数部分除8取余,小数部分为乘8取整
  • 八进制中数据满8进1,所以每个八进制位上的数据只能为0~7

2.2 八进制与二进制互相转换

  二进制转换为八进制的方法是:

  • 整数部分:从小数点开始往左,三位成一组,不足左边补0
  • 小数部分:从小数点开始往右,三位成一组,不足右边补0
  • 将分成的若干个二进制转换为十进制数,依次排列即为所求八进制数。

3. 十六进制与十进制、二进制的相互转换shi

3.1 十六进制与十进制相互转换

  十六进制转十进制的做法也和十进制转二进制类似:

  • 整数部分除16取余,小数部分称16取整
  • 十六进制的进位方法为满16进1,所以每个十六进制位上为115。为了用一个十六进制位表示所有数,1015就用A~F对应表示。

3.2 十六进制与二进制相互转换

  十六进制与二进制的相互转换跟八进制与二进制的转换类似:

  • 整数部分:从小数点开始往左,四位成一组,不足左边补0
  • 小数部分:从小数点开始往右,四位成一组,不足右边补0
  • 将分成的若干个二进制转换为十进制数(其中1015对应AF),依次排列即为所求十六进制数。

例3:将二进制数10101111.10111转换为相应的八进制数和十六进制。
10101111.1011 1 2 = 010   101   111   . 101   11 0 2 = 257.5 6 8 10101111.1011 1 2 = 1010   1111   .   1011   100 0 2 = A F . B 8 1 6 10101111.10111_2 = 010\space101\space111 \space.101\space110_2 = 257.56_8 \\ 10101111.10111_2 = 1010\space1111\space.\space1011\space1000_2=AF.B8_16 10101111.101112=010 101 111 .101 1102=257.56810101111.101112=1010 1111 . 1011 10002=AF.B816


总结

1. 十进制转二进制、八进制、十六进制

进制 数值 方法
二进制 0~1 整数除2取余,小数乘2取整
八进制 0~7 整数除8取余,小数乘8取整
十六进制 0~F 整数除16取余,小数乘16取整

2. 二进制、八进制、十六进制转十进制

  • 二进制转十进制:以小数点为标准,
    整数部分从左往右每位权值为 2 0 、 2 1 、 2 2 2^{0}、2^{1}、2^{2} 202122依次递增;
    小数部分从右往左每位权值为 2 − 1 、 2 − 2 、 2 − 3 2^{-1}、2^{-2}、2^{-3} 212223依次递减。
  • 八进制转十进制:以小数点为标准,
    整数部分从左往右每位权值为 8 0 、 8 1 、 8 2 8^{0}、8^{1}、8^{2} 808182依次递增;
    小数部分从右往左每位权值为 8 − 1 、 8 − 2 、 8 − 3 8^{-1}、8^{-2}、8^{-3} 818283依次递减。
  • 十六进制转十进制:以小数点为标准,
    整数部分从左往右每位权值为 1 6 0 、 1 6 1 、 1 6 2 16^{0}、16^{1}、16^{2} 160161162依次递增;
    小数部分从右往左每位权值为 1 6 − 1 、 1 6 − 2 、 1 6 − 3 16^{-1}、16^{-2}、16^{-3} 161162163依次递减。
  • 八进制、十六进制转十进制:将数据先分组后,采用二进制转十进制方法对每位进行计算

3. 二进制、八进制、十六进制转换

  将八进制数据和十六进制数据对应不同的二进制位数进行计算即可。

进制 对应位数 数值
八进制 3位二进制位 0~7
十六进制 4位二进制位 0~F

你可能感兴趣的:(复习)