#M8316. C3.16 进制转换

C3.16 进制转换

数制概念


数制也称为计数制,是一种计数的方法,用一组固定的符号和统一的规则来表示数值的方法。包括数位、基数位权三个要素。


  • 数位: 指数字符号在一个数中所处的位置。
  • 基数: 指在某种进位计数制中数位上所能使用的数字符号的个数。(例如十进制的基数为10)
  • 位权: 数制中某一位上的1所表示数值的大小(所处位置的价值)。(例如十进制的567,5的位权是100,6的位权是10,7的位权是1)

进制概念


进制就是进位计数制,是人为定义的带进位的计数方法。对于任何一种进制 -- X进制,每一位上的数做运算时都是逢 X 进一(借位时借一当 X ),各数位上的数字可以使用 0,1,...,X - 1共 X 个数字来表示

  • 二进制: 由0,1组成,即“逢二进一”,基数是 2。
  • 八进制: 由0~7组成,即“逢八进一”,基数是 8。
  • 十进制: 由0~9组成,即“逢十进一”,基数是 10。
  • 十六进制: 由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成,即“逢十六进一”,基数是 16。

进制转换


十进制转换为 X 进制

整数部分:“除 X 取余,逆序排列”

1. 将 X 作为除数,用十进制整数除以 X,可以得到一个商和余数;

2. 保留余数,用商继续除以 X,又得到一个新的商和余数; ......

3. 如此反复进行,每次都保留余数,用商接着除以 X,直到商为 0 时为止。

4. 先得到的余数作为 X 进制数的低位数字,后得到的余数作为 X 进制数的高位数字,依次排列起来。


例:将十进制数字 42 转为二进制

(42)10 = (101010)2(42)_{10​} = (101010)_2


小数部分:“乘 X 取整,顺序排列”

1. 将十进制小数部分乘以 X,乘完后将乘积的整数部分取出;

2. 余下的小数部分继续乘以 X ,再将新乘积的整数部分取出;......

3. 如此反复进行,每次都取出整数部分,用剩下的小数部分接着乘以 X,直到乘积中的小数部分为 0,或者达到所要求的精度为止。

4. 把取出的整数部分按顺序排列起来,先取出的整数作为 X 进制小数的高位数字,后取出的整数作为低位数字。


例:将十进制数字 0.6875 转为二进制

(0.6875)10 = (0.1011)2(0.6875)_{10​} = (0.1011)_2

注:绝大部分浮点数无法用二进制精确表示


X 进制转换为十进制

方法:“按权展开求和”

1. 对于整数部分,从右往左看,第 i 位的位权等于X i1^{i−1}

2. 对于小数部分,从左往右看,第 j 位的位权为X ^{−j}。

3. 把每个数位上数值与对应的位权相乘后,将乘积相加求和。


例:将二进制数字 101.11 转为十进制


其他进制转换