专升本计算机基础:二、八、十六进制互转方法详解
专升本计算机基础里,二、八、十六进制互转是第一章的高频考点,也是很多同学从“看得懂”到“做得对”之间最容易卡住的地方。有的同学记了分组法,却不知道小数部分为什么要反向补零;有的同学背下了字母表,却不知道怎么拆位;还有同学只会套公式,题目一变就乱。这篇内容专门讲二、八、十六进制互转,把这几种转换方式和背后的原理一次说清楚。它适合正在准备山东、四川、江西、河北、辽宁、甘肃、内蒙古、重庆、天津等地专升本计算机基础的同学,也适合计算机一级、二级或大一期末复习。你不需要提前掌握很多知识,只要能看懂 0 和 1,就能跟着下面的步骤走。最值得先记住的一个结论是:八进制和十六进制分别是二进制的“三位一组”和“四位一组”的缩写形式,所以它们之间的互转可以非常快,而十进制更适合作为兜底验证。
1. 先搞懂为什么专升本要考进制转换
1.1 进制转换在考试中怎么出现
在专升本计算机基础试卷里,进制转换通常出现在选择题、填空题,偶尔会在简答题里让你写出转换过程。如果学校用的是《计算机文化基础》这类大纲,第一章“计算机基础知识”一定会涉及数制与编码。出题方式大概有这几种:
- 给一个二进制数,让你选对应的十六进制;
- 给一个八进制数,让你转成二进制;
- 给一个十进制整数,让你填转成十六进制后的结果;
- 有时候会把进制转换揉进 ASCII码、汉字编码、IP 地址、原码反码补码相关题目里。
所以进制转换不只是一章孤立的内容。你后面学到数据表示、存储器容量计算、网络地址时,还会频繁看到二进制和十六进制。如果这里没有练熟,后面会反复吃亏。我一般会提醒学生:不要把进制转换当成“背公式”的送分题,而要真正理解每一位数字代表什么,否则题目一变形就容易错。
1.2 二、八、十六进制的关系:为什么它们能直接互转
二进制的基数是 2,八进制的基数是 8,十六进制的基数是 16。这三个数之间有很直接的关系:2 的 3 次方等于 8,2 的 4 次方等于 16。也就是说,二进制里每三位,正好可以对应一位八进制;每四位,正好可以对应一位十六进制。这就是“三位一组”“四位一组”做转换的根本原因。
很多人会觉得八进制和十六进制是独立的新进制,其实不是。在计算机里,二进制太长了,写起来容易看错,所以会用八进制或十六进制做“缩写”。比如二进制 1101011 写起来七位,阅读容易出错;转成八进制是 153,转成十六进制是 6B,明显短很多。这也是为什么汇编语言、内存地址、文件权限里经常出现十六进制和八进制。
这里有一个边界需要说清楚:只有二进制、八进制、十六进制之间可以这样直接分组转换,因为它们的基数都恰好是 2 的整数次幂。二进制和十进制之间不能“三位一组”或“四位一组”直接转,必须用位权展开或除乘取余。理解了这一点,你就知道什么时候用分组法,什么时候用位权法。
那八进制和十六进制之间能不能直接分组转换?答案是不能,因为 8 和 16 之间是 2 的 3 次方和 2 的 4 次方的关系,没有直接的整数分组对应。但可以通过二进制作为中间桥梁:先把八进制每位拆成三位二进制,再重新按四位一组合成十六进制。这样比先转十进制更快,后面第 4 节和第 5 节会展开。
2. 二进制转八进制和十六进制:分组法最省事
2.1 二进制转八进制:三位一组
先看怎么把二进制转成八进制。步骤并不复杂:
- 先找到小数点。如果题目给的二进制没有小数点,就默认小数点在最右边。
- 整数部分:从小数点开始向左,每三位一组,从右往左分。
- 小数部分:从小数点开始向右,每三位一组,从左往右分。
- 如果最左边一组不够三位,就在前面补 0;如果最右边一组不够三位,就在后面补 0。
- 把每组三位二进制转成一位八进制数字。
举个例子:二进制 1101011.01 转八进制。
整数部分 1101011,从右往左三位一组:先是 011,再是 101,最后剩一个 1,补 0 成 001,所以分组为 001 101 011。分别对应 1、5、3。小数部分 .01,从左往右三位一组,只有两位,补 0 成 010,对应 2。最终结果是 153.2。
展开写就是:
1101011.01(2) = 001 101 011 . 010(2) = 153.2(8)注意整数部分在最左边补 0 不影响大小,小数部分在最右边补 0 也不影响大小。很多人会问,小数部分为什么一定要向右补 0?因为小数部分的权重从 2 的 -1 次方开始,右边补 0 相当于增加更低位的 0,原数不变;如果向左补 0,就会把原来的数字位置改变,数值就错了。
2.2 二进制转十六进制:四位一组
二进制转十六进制,步骤几乎一样,只是把“三位一组”改成“四位一组”。从小数点向左、向右分别按四位分组,不足四位的时候,整数部分在左边补 0,小数部分在右边补 0。每一组四位二进制对应一位十六进制数字。
继续用 1101011.01 举例。
整数部分 1101011,从右往左四位一组:先是 1011,剩下 110,补 0 成 0110,所以分组为 0110 1011,分别对应 6 和 B。小数部分 .01,从左往右四位一组,只有两位,补 0 成 0100,对应 4。最终结果是 6B.4。
1101011.01(2) = 0110 1011 . 0100(2) = 6B.4(16)这里要注意,十六进制里 10 到 15 要用 A 到 F 表示。10 对应 A,11 对应 B,12 对应 C,13 对应 D,14 对应 E,15 对应 F。很多同学把 11 直接写成 11,这在十六进制里不是合法的单个数字。
2.3 带小数点的二进制怎么分组
再强调一次分组方向:
- 整数部分,从右往左分;
- 小数部分,从左往右分;
- 分组不足时,整数部分补左边,小数部分补右边。
用二进制 101.101 来跑一遍。
转八进制:整数部分 101 正好三位,对应 5;小数部分 101 正好三位,对应 5,结果是 5.5。
转十六进制:整数部分 101 不足四位,补 0 成 0101,对应 5;小数部分 101 不足四位,补 0 成 1010,对应 A,结果是 5.A。
如果不小心把方向搞反,结果会完全不对。比如小数部分 101 向右补 0 得 1010,代表 0.1010,等于十进制 0.625;如果向左补 0 得 0101,代表 0.0101,等于十进制 0.3125。两者差了一倍。所以补 0 方向必须按规则来。
3. 八进制、十六进制转二进制:拆位法
3.1 每一位八进制拆成三位二进制
八进制转二进制是分组法的逆过程。把每一位八进制数字都写成对应的三位二进制,不足三位的,在左边补 0 补成三位,然后把所有二进制位连起来,最后去掉整数部分最左边多余的 0。
八进制数字和三位二进制的对应关系:
0 -> 000 1 -> 001 2 -> 010 3 -> 011 4 -> 100 5 -> 101 6 -> 110 7 -> 111举例:八进制 153.2 转二进制。
1 对应 001,5 对应 101,3 对应 011,小数部分 2 对应 010,连起来就是 001 101 011 . 010。去掉整数部分最前面的两个 0,得到 1101011.01。这个过程正好是前面二进制转八进制的反向操作,可以用来互相验证。
这里最容易犯的错误是:把八进制 1 直接写成 1,5 直接写成 101,3 直接写成 11,然后拼成 110111。这样写会丢掉位与位之间的对应关系,结果也会差很多。尤其是当八进制某一位是 0 时,更要写成 000,不能省略。比如八进制 307,3 对应 011,0 对应 000,7 对应 111,连起来是 011000111,去掉前导 0 得到 11000111。中间的 0 必须保留,否则数值完全不对。
3.2 每一位十六进制拆成四位二进制
十六进制转二进制,方法是每一位十六进制数字拆成四位二进制。同样,不足四位补 0。十六进制和四位二进制的对应关系建议背熟:
0 -> 0000 1 -> 0001 2 -> 0010 3 -> 0011 4 -> 0100 5 -> 0101 6 -> 0110 7 -> 0111 8 -> 1000 9 -> 1001 A -> 1010 B -> 1011 C -> 1100 D -> 1101 E -> 1110 F -> 1111举例:十六进制 6B.4 转二进制。
6 对应 0110,B 对应 1011,4 对应 0100,连起来是 0110 1011 . 0100。去掉整数部分最前面的一个 0,得到 1101011.01。
这个结果和前面从二进制转成十六进制时完全一致,说明步骤是对的。平时练习时,可以用这种方法做回代检查。
3.3 常见错误:拆位后丢掉中间的零
在作业里经常看到这样的写法:十六进制 0x10 转二进制,有人写成 1 0000,还有人写成 1000。正确结果应该是 0001 0000,去掉前导 0 后是 10000。关键问题出在中间某一位为 0 时,容易丢。
比如十六进制 0xA0,A 对应 1010,0 对应 0000,拼接后是 10100000。很多同学会写成 1010 0 或 1010000,少了一位。正确做法是:A 和 0 各占四位,所以结果一定是 8 位二进制,再去掉最前面的 1 后面的 0 ?不对,这里的第一个字符是 1,所以前导 0 不存在?注意 10100000 第一位是 1,不能去掉,结果是 10100000。如果最高位是 0,比如 0x0F,结果是 00001111,去掉前导 0 得 1111。
判断标准可以这样记:一个八进制位拆成 3 位二进制,一位十六进制位拆成 4 位二进制。转换结果大概会有“位数乘 3 或乘 4”那么长,如果明显少了,一定是丢了某个 0。
4. 二、八、十六进制和十进制互转:位权展开才是根
4.1 其他进制转十进制:按位权展开
位权,就是当前位的权重。对于二进制,整数部分从右往左的权重分别是 2^0、2^1、2^2……;小数部分从左往右分别是 2^-1、2^-2……。转换时,用每一位数字乘以该位的权重,再相加。
例如二进制 1101.1:
1×2^3 + 1×2^2 + 0×2^1 + 1×2^0 + 1×2^-1 = 8 + 4 + 0 + 1 + 0.5 = 13.5八进制转十进制也是一样,只是底数换成 8。比如八进制 153.2:
1×8^2 + 5×8^1 + 3×8^0 + 2×8^-1 = 64 + 40 + 3 + 0.25 = 107.25十六进制转十进制,底数换成 16。比如十六进制 6B.4:
6×16^1 + 11×16^0 + 4×16^-1 = 96 + 11 + 0.25 = 107.25你会发现,前面例子里的二进制 1101011.01、八进制 153.2、十六进制 6B.4,其实是同一个数,都等于十进制 107.25。这就是进制转换的意义:同一个数值,可以用不同进制表示。
4.2 十进制转二进制:整数除2取余、小数乘2取整
十进制转二进制,要分成整数部分和小数部分来处理。
整数部分用“除 2 取余法”:把整数不断除以 2,记下余数,直到商为 0。余数从下往上倒序排列。
例如十进制 13:
13 ÷ 2 = 6 余 1 6 ÷ 2 = 3 余 0 3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1余数从下往上读是 1101,所以 13(10) = 1101(2)。
小数部分用“乘 2 取整法”:把小数不断乘以 2,取乘积的整数部分,再用剩下的小数部分继续乘,直到小数部分为 0 或达到要求的精度。整数部分从上往下正序写。
例如十进制 0.25:
0.25 × 2 = 0.5,取整数 0,剩 0.5 0.5 × 2 = 1.0,取整数 1,剩 0从上往下读是 01,所以 0.25(10) = 0.01(2)。合并起来,13.25(10) = 1101.01(2)。
这里最容易记反的就是方向:整数部分除 2 取余要倒序,小数部分乘 2 取整要正序。两个方向一旦反了,结果就完全不对。
4.3 十进制转八进制和十六进制:同样思路
十进制转八进制,整数部分用“除 8 取余法”,小数部分用“乘 8 取整法”;十进制转十六进制,整数部分用“除 16 取余法”,小数部分用“乘 16 取整法”。
举例:十进制 153 转八进制。
153 ÷ 8 = 19 余 1 19 ÷ 8 = 2 余 3 2 ÷ 8 = 0 余 2余数从下往上读是 231,所以 153(10) = 231(8)。
十进制 153 转十六进制:
153 ÷ 16 = 9 余 9 9 ÷ 16 = 0 余 9余数从下往上读是 99,所以 153(10) = 99(16)。
如果余数超过 9,要写成 A-F。例如十进制 171 转十六进制:
171 ÷ 16 = 10 余 11 10 ÷ 16 = 0 余 10余数从下往上读是 10、11,分别写成 A、B,所以 171(10) = AB(16)。一定先把十进制余数 10 和 11 转成字母 A 和 B,再排顺序。
小数部分的乘 8、乘 16 平时考得少,原理和乘 2 一样。如果不会,可以先把十进制小数转成二进制,再用分组法转成八进制或十六进制,会更好理解。
4.4 用十进制做中间桥梁的实用组合
在考场上,如果题目让你做八进制和十六进制互转,你一下子想不起通过二进制中转的方法,最稳妥的办法是先用十进制做中间桥梁。
步骤是:
- 把原进制按位权展开转成十进制;
- 再把十进制用除乘取余法转成目标进制。
比如八进制 153 转十六进制。
先按位权展开:153(8) = 1×64 + 5×8 + 3 = 107(10)。
再把 107 转十六进制:
107 ÷ 16 = 6 余 11 6 ÷ 16 = 0 余 6余数从下往上读是 6、11,11 写成 B,所以 153(8) = 6B(16)。
这个办法比直接二进制中转慢一点,但每一步都有固定流程,不容易错。我会建议考生平时练习两种方式:直接转换用于提升速度,十进制兜底用于考场检查。如果你发现自己用直接法经常漏 0,那就每道题最后用十进制法验算一遍,错误率会明显下降。
5. 巧用8421码快速转换
5.1 8421码的本质
四位二进制从高位到低位的权值分别是 8、4、2、1,这就是常说的 8421 权值。当你看到一个四位二进制数,比如 1010,可以快速判断它包含一个 8 和一个 2,加起来是 10,对应十六进制 A。再看 1011,是 8+2+1=11,对应十六进制 B。
为什么有用?因为十六进制每一位对应四位二进制,而四位二进制的权值恰好是 8421。你要做的就是把四位二进制拆成“8、4、2、1”这几个权值的组合,很快能算出对应的十六进制。八进制则是三位二进制,权值是 4、2、1。
注意,这里说的 8421 权值法,不是教材里的 8421 BCD 码。BCD 码通常也用四位二进制表示十进制数字 0-9,写法碰巧很像,但含义不同。考试里如果出现“8421码”这个词,一定要结合上下文判断。
5.2 二进制和十六进制快速互转
有了 8421 权值,二进制和十六进制互转会非常快。
比如二进制 1001,权值 8+1=9,对应十六进制 9。 二进制 1110,权值 8+4+2=14,对应十六进制 E。 二进制 0011,权值 2+1=3,对应十六进制 3。
反过来,十六进制转二进制,可以把十六进制数字拆成 8421 的组合。比如 D = 13 = 8+4+1,所以 D 的二进制是 1101。7 = 4+2+1,二进制是 0111。注意 7 拆完是 0111,如果只写 111,后面拼接时会少一位。建议写的时候固定补足四位:0-7 分别对应 0000-0111,8-15 对应 1000-1111。
下面这张表最好背熟,它是二进制、八进制、十六进制互转的基础:
| 十进制 | 十六进制 | 四位二进制 | 八进制 |
|---|---|---|---|
| 0 | 0 | 0000 | 0 |
| 1 | 1 | 0001 | 1 |
| 2 | 2 | 0010 | 2 |
| 3 | 3 | 0011 | 3 |
| 4 | 4 | 0100 | 4 |
| 5 | 5 | 0101 | 5 |
| 6 | 6 | 0110 | 6 |
| 7 | 7 | 0111 | 7 |
| 8 | 8 | 1000 | 10 |
| 9 | 9 | 1001 | 11 |
| 10 | A | 1010 | 12 |
| 11 | B | 1011 | 13 |
| 12 | C | 1100 | 14 |
| 13 | D | 1101 | 15 |
| 14 | E | 1110 | 16 |
| 15 | F | 1111 | 17 |
注意表格中“八进制”这一列,是按二进制“三位一组”得到的结果,所以十进制 8 对应八进制 10,9 对应 11。这正好体现了三位一组的规律。
5.3 二进制和八进制快速互转
八进制对应三位二进制,权值是 4、2、1。所以二进制 101,就是 4+1=5;二进制 111,就是 4+2+1=7。反过来,八进制 5 写成二进制 101,因为 5 = 4+1。
平时看到二进制 1101011.01,用 8421 权值按四位一组转十六进制是 6B.4,按三位一组转八进制是 153.2。这个过程熟练之后,速度会很快。
我会建议学生把这张对照表抄一份贴在电脑前,但不要长期依赖。最好练到看到十六进制数字,能直接说出四位二进制;看到三位二进制,能直接说出八进制数字。这样考试时不用现场笔算,能省下很多时间。
6. 专升本实战:典型题型、易错点和检查方法
6.1 常见题型和解题步骤
专升本计算机基础里的进制转换题,常见有这几种:
- 单选:给出二进制 1101011,问对应的八进制和十六进制;
- 填空:十六进制 6B 转换成二进制,结果是;
- 判断:八进制 153 和二进制 1101011 是否相等;
- 简答:将十进制 107.25 转换为二进制、八进制、十六进制,写出过程。
不管题目怎么出,按下面的顺序走最稳:
- 先看题目给的数是几进制,要求转成几进制。
- 如果是在二进制、八进制、十六进制之间转换,优先用分组法或拆位法。
- 如果涉及十进制,先用位权展开或除乘取余法。
- 写出最终结果,确保小数点和字母书写清楚。
- 回代验证:把结果按相反方向转回原进制,看是否一致。
举例:把十六进制 6B.4 转成十进制。
6B.4(16) = 6×16 + 11×1 + 4×1/16 = 96 + 11 + 0.25 = 107.25再做回代:107.25 转二进制、八进制、十六进制,如果最后得到 1101011.01、153.2、6B.4,说明前面步骤全部正确。这个方法比较稳,考试来不及完整写过程时,也可以用最后一步快速检查。
6.2 容易丢分的四个地方
结合平时看到的作业,最常丢分的点有四个。
第一,分组方向错。整数部分从右往左分,小数部分从左往右分。有人把小数部分也按从右往左分,结果整个数就不对了。
第二,拆位时丢 0。八进制拆三位,十六进制拆四位,每一位都要拆成固定位数。中间某一位是 0 时尤其容易丢。比如十六进制 0x10 拆成二进制,正确写法是 0001 0000,去掉前导 0 后是 10000;如果中间少写一个 0,变成 1000,数值就错了。
第三,除 2 取余忘记倒序。整数部分转换时,余数要从下往上读;小数部分乘 2 取整,要从上往下读。顺序反了,答案就完全不同。
第四,十六进制字母处理不当。10 不是十六进制里的数字,要写成 A;11 写成 B;12 写成 C;13 写成 D;14 写成 E;15 写成 F。反过来,看到字母 A 要想到 10,看到 F 要想到 15。
另外还有一个容易被忽略的问题:题目如果要求写出转换过程,那就一定要把过程写出来,不要只给结果。阅卷时按步骤给分,过程比答案更重要。
6.3 验证结果是否正确的方法
推荐两种验证方法:回代法和十进制法。
回代法:你把二进制 1101011.01 转成了十六进制 6B.4,那就倒过来把 6B.4 按拆位法拆回二进制,看是不是 1101011.01。如果一致,基本没问题。这个过程很快,30 秒内能完成。
十进制法:把原数和结果都转成十进制,比较是否相等。例如原数是二进制 1101011.01,转成十进制是 107.25;结果十六进制 6B.4 转成十进制也是 107.25。这样能发现小数点位置和字母写错的问题。
平时练习时,可以用电脑自带计算器的“程序员”模式辅助验证,但考试时一定不能依赖计算器。我建议做题后立刻用手工回代,而不是直接翻答案,这样才能找到自己到底哪一步容易出错。
6.4 平时复习建议
准备专升本,不是做几道题就能稳定拿分的。建议按三个阶段练。
第一阶段,背表。把 0 到 15 的十进制和二进制、八进制、十六进制对应关系背熟。尤其要记住 A-F 对应 10-15。这是所有快速转换的基础。
第二阶段,练步骤。每天固定做 10 道换算题,全部手写过程。不要心算到最后直接写答案,步骤容易暴露问题。每次写完后用回代法检查。
第三阶段,练速度。连续做 20 道选择题,每道控制在 1 分钟内。考试时进制转换题通常不给太多时间,熟练度比“会做”更重要。
如果能把进制转换和后面的数据表示、字符编码、IP 地址等内容联系起来,会更容易理解为什么需要十六进制。比如 ASCII 码经常写成两个十六进制位,内存地址也常用十六进制表示。这些地方都会反复用到二、八、十六进制互转,提前练熟不吃亏。
最后想分享一个经验:很多同学在进制转换上丢分,不是因为不会,而是因为几个小细节反复出错,补 0 方向、分组方向、余数顺序、字母写错。我一般建议准备一个“错题小本”,每次做错就只记一句话,考前翻一遍比自己盲刷十套题更有效。你不需要把所有方法都背下来,先把分组法和拆位法练熟,再用十进制当兜底验证,专升本计算机基础里的进制转换题基本就稳了。
