计算机必备技能:进制转换详解
计算机必备技能:进制转换详解
进制转换是计算机科学的基础知识,掌握不同进制之间的转换方法对于理解计算机底层原理至关重要。本文将详细介绍二进制、八进制、十进制和十六进制之间的转换方法,包括整数和浮点数的转换,适合初学者学习。
一.计算机常见的进制
1. 十进制(Decimal)
基数:10(使用符号 0-9)。
特点:
- 人类日常使用的计数系统,符合自然习惯。
- 每一位的权值是 10 的幂次(如个位是 100,十位是101)。
例子:
2. 二进制(Binary)
基数:2(使用符号 0 和 1)。
特点:
- 计算机底层(如CPU、内存)的基础,用高低电平表示 0/1。
- 每一位的权值是 2 的幂次。
- 应用:逻辑运算、数据存储、数字电路设计。
例子:
3. 八进制(Octal)
基数:8(使用符号 0-7)。
特点:
- 3位二进制对应1位八进制(如 111₂ = 7₈),简化二进制表示。
- 权值是8的幂次。
- 应用:早期计算机系统(如Unix文件权限 chmod 755)。
例子:
4. 十六进制(Hexadecimal)
基数:16(符号 0-9 和 A-F,对应十进制 10-15)。
特点:
- 4位二进制对应1位十六进制(如 1111₂ = F₁₆),更紧凑。
- 权值是 16 的幂次。
- 应用:内存地址、颜色代码(如 #FF0000 表示红色)、编码(如UTF-8)。
例子:
接下来,引出一个进制转换的概念,这将会涉及我接下来讲解的进制转换。
基本进制对应的转换表,如图所示:
二.进制中的权位的概念
进制中权位的概念:
1. 位(Position/Digit)
位的定义:“位”指数字在某个进制中的具体位置,即某个数字符号(如0-9、A-F等)在数中的排列位置。
例如,在十进制数 345 中:
- 3 在百位(第3位),
- 4 在十位(第2位),
- 5 在个位(第1位)。
位的特点:位的名称通常以进制基数命名,如十进制的“个位、十位、百位”,二进制的“第1位、第2位”等。
位是位置的名称,不涉及具体数值的计算。
2. 权(Weight)
权的定义:“权”指每个位置对应的权重值,即该位置的数字在整体数值中的实际贡献大小,由基数的幂次决定。
例如,
十进制数 345 的权分解:
- 百位的权是 102=100,
- 十位的权是 101=10,
- 个位的权是 100=1。
因此,数值为3×100+4×10+5×1=345。
权的特点:
- 权是数学上的权重值,与进制基数直接相关。
- 权决定了该位置数字的实际值(数字 × 权)。
- 权的计算公式:若进制基数为b,从右向左第n位的权为bn(通常从第0位开始计数)。
总结:
- 位是位置的名称,标识数字的排列顺序。
- 权是位置的数学权重,决定该位置数字的实际贡献值。
- 权是计算的基础,位是位置的标识,两者共同构成进制系统的核心逻辑。
三.整数的进制转换
1.二进制转换十进制
首先,由我们上面引出的权位的概念,接下来会在最后的时候我会将运用权位展开的整合到一起,方便读者阅读和学习。
二进制转换十进制的步骤如下:
第一步:写位,并且按照从右向左依次为第0位(1)、第1位(0)、第2位(0)、第3位(0)、第4位(0)、第5位(0)、第6位(0)、第7位(1)。
第二步:写权,权值的判断根据权值的计算公式, 这里的进制基数为2,从右向左第n位的权为2n(通常从第0位开始计数)。
第三步:数值计算,将上面的第一步和第二步整合一起
2.二进制转换八进制
二进制转换八进制的方法,三合一。
三合一代表的是三位合成一位。
第一步:将二进制的位写下来,然后从右往左的顺序在三个画一个下划线作为一个整体,若还有余下的二进制数不足三位则向前补0。
第二步:根据基本进制对应的转换表,去进行配对
第三步:将配对的按先后顺序进行组合。
3.二进制转换十六进制
二进制转换八进制的方法,四合一。
四合一代表的是四位合成一位。
第一步:将二进制的位写下来,然后从右往左的顺序在四个画一个下划线作为一个整体,若还有余下的二进制数则不足四位则向前补0。
第二步:根据基本进制对应的转换表,去进行配对
第三步:将配对的按先后顺序进行组合。
4.十进制转换二进制
接下来是十进制转换二进制、八进制、十六进制,十进制的转换,我分别以二种方式,第一种的方式是最为简单不需要太纠结的短除法,接下来讲解短除法。
短除法,在短除法其实就是阶梯的除法,不过阶梯除法是求一个数的余数,我们拿十进制转换二进制为例。
例:
第一步:先画阶梯,将32放入阶梯内,除以需要转换的进制基数(此例题是2所以基数是2)求他们的余数。
注:遇到除到不能被进制的基数整除的时候,将这个数作为余数,
第二步:自下往上取,按从顺序组成二进制数
从第一步得到余数后,自下往上得到的数为10000
因此
第二种方法:翻卡片,权位展开,翻卡片
第一步:我们首先按二进制的权位从0幂次方开始逐步递进去,如何判断我们需要取的最大幂次呢,根据给的十进制数我们只要找
十进制(n取正整数),找到一个幂次方就是我们需要逐步递进的最大二进制。
例
解出n=5
第二步:写出20到25的幂次方的数
第三步:根据第二步找的幂次方数自小往大相减,把能相减的次方的数在下面画一个1,最终从右往左顺序组合起来
最终结果
5.十进制转换八进制
十进制转换八进制的方法采用短除法。
第一步:先画阶梯,将32放入阶梯内,除以需要转换的进制基数(此例题是8所以基数是8)求他们的余数。
注:遇到除到不能被进制的基数整除的时候,将这个数作为余数,
第二步:自下往上的顺序组合起来得出十进制转换八进制的数。
结果为
6.十进制转换十六进制
十进制转换十六进制的方法采用短除法。
第一步:先画阶梯,将32放入阶梯内,除以需要转换的进制基数(此例题是16所以基数是16)求他们的余数。
第二步: 自下往上的顺序组合起来得出十进制转换十六进制的数。
结果:
7.八进制转换十进制
八进制转换十进制采取权位展开法。
例:
第一步:写位,并且按照从右向左依次为第0位(2)、第1位(3)
第二步:写权,权值的判断根据权值的计算公式, 这里的进制基数为8,从右向左第n位的权为
(通常从第0位开始计数)。
第三步:数值计算,将上面的第一步和第二步整合一起
8.八进制转换二进制
八进制转换二进制方法,采取的是转换表对照法。由于二进制转换八进制采取“三合一”法,所以一个八进制占三位二进制,因此转换表对照法也是1位八进制对应3位二进制。
例:
第一步:取位,从右往左依次取出2和3
第二步:将2和3对照上面的转换表
2对应的三位二进制是010
3对应的三位二进制是011
第三步:在“第二步”基础上按照原本数字的顺序组合起来。
9.八进制转换十六进制
八进制转换十六进制,没有最直接的方法都需要通过二次转换。要么八进制转换成二进制,二进制再转换成十六进制。
要么八进制转换成十进制,十进制再转换十六进制。
例:
第一种:八进制转换成二进制,二进制转换成十六进制。
第一步:将八进制的32转换成二进制。这里看我八进制转换二进制方法。
第二步:将二进制转换成十六进制。这里去看我二进制转换十六进制的方法。
二进制转换十六进制,从右往左用“四合一法”,不足4位向前补0得到4位
1010的二进制对应转换表的十六进制“A”
01不足4位向前补2个0得到:0001对于转换表的1
第三步:在“第二步”基础上按照原本数字的顺序组合起来。
第二种方法:八进制转换成十进制,十进制转换成十六进制
例:
第一步:将八进制的32转换成十进制。这里看我八进制转换十进制方法。
第二步:将十进制转换成十六进制。这里去看我十进制转换十六进制的方法(短除法)。
10.十六进制转换二进制
八进制转换二进制方法,采取的是转换表对照法。由于二进制转换八进制采取“四合一”法,所以一个十六进制占四位二进制,因此转换表对照法也是1位十六进制对应4位二进制。
例:
第一步:取位,从右往左依次取出2和3
第二步:将2和3对照上面的转换表
2对应的四位二进制是0010
3对应的四位二进制是0011
第三步:在“第二步”基础上按照原本数字的顺序组合起来。
11.十六进制转换十进制
十六进制转换十进制采取权位展开法。
例:
第一步:写位,并且按照从右向左依次为第0位(2)、第1位(3)
第二步:写权,权值的判断根据权值的计算公式, 这里的进制基数为16,从右向左第n位的权为
(通常从第0位开始计数)。
第三步:数值计算,将上面的第一步和第二步整合一起
12.十六进制转换八进制
十六进制转换八进制,没有最直接的方法都需要通过二次转换。要么十六进制转换成二进制,二进制再转换成八进制。
要么十六进制转换成十进制,十进制再转换八进制。
例:
第一种:十六进制转换成二进制,二进制转换成八进制。
第一步:将十六进制的32转换成二进制。这里看我十六进制转换二进制方法。
第二步:将二进制转换成八进制。这里去看我二进制转换八进制的方法(三合一)。
注:若三合一法前面是无意义的0则不需要再进行三合一法
第二种方法:十六进制转换成十进制,十进制转换成八进制
例:
第一步:将十六进制的32转换成十进制。这里看我十六进制转换十进制方法。
第二步:将十进制转换成八进制。这里去看我十进制转换八进制的方法(短除法)。
四.浮点数的转换法
浮点数的转换我讲解,十进制转换二进制的浮点数转换,至于为什么不讲解其他的进制,是因为十进制的浮点数转换二进制已经适用于绝大数了。我们一般也不会去算浮点数,因为它存在着一些误差。
十进制浮点数转换对应二进制。在前面我们讲解了十进制转换二进制的短除法,这里与它相反,首先将十进制的整数部分和小数部分取出来,再将整数部分按照我们整数的进制转换法去转换对应的二进制,再将小数部分运用 “乘积求余法”。
乘积求余法: 将小数部分乘以一个2,然后取余下的整数位,精度根据实际我们需要,去做一个乘积求余停止。
这里我们例题只取四次乘积留下的余数
结果:
注:
从例题我们可以看出浮点数的方法,乘积求余,先乘以基数,再取整数作为余数,再原本的数字基础上减去整数部分后,再乘以基数,若乘以基数最终乘到只有整数位没有小数位的时候说明它只能最大取到这里。若乘不到只有整数,那么根据自身要求保留几位停止乘积。最后反复这样的一个过程“自上往下”取然后组合得到进制转换的数据。
五.总结
- 二进制转换八进制,采取“三合一”法
- 二进制转换十六进制,采取“四合一”法
- 八进制转十六进制,采取八进制转换二进制,二进制转换十六进制或者八进制转换十进制,十进制转换十六进制。
- 十六进制转换八进制,采取十六进制转换二进制,二进制转换八进制或者十六进制转换十进制,十进制转换八进制。