🔥 考研计组核心考点!码制是408/计算机考研必考基础,90%错题都源于概念混淆、取值范围不清、0的歧义问题!
本篇专为考研党整理,摒弃晦涩教材话术,从原理→规则→对比→易错点→真题实战全覆盖,看完彻底搞定四种机器码,考试零丢分!
适用人群:计算机考研408、自命题计组考生、零基础入门、期末备考
核心考点:码制转换、取值范围、0的表示、补码运算、移码偏移特性
一、前置基础:机器数与真值
我们日常书写的带正负号的数(如+5、-3)是真值;
计算机中二进制编码表示的带符号数,称为机器数。
所有码制通用规则(考研核心):
- 最高位为符号位:0代表正数,1代表负数
- 剩余低位为数值位,表示数值大小
- 默认考研考察:n位定点整数(最常考8位、16位)
二、四大码制超详细解析
1. 原码:最直观的机器数
核心定义:符号位+真值绝对值,完全贴合人类读数习惯,是最简单的编码方式。
编码规则:
- 正数:符号位为0,数值位为真值二进制
- 负数:符号位为1,数值位为真值绝对值二进制
8位原码例题:
- [+5]原 = 0000 0101
- [-5]原 = 1000 0101
考研重点:0的原码(有歧义)
- [+0]原 = 0000 0000
- [-0]原 = 1000 0000
n位原码取值范围:$$-(2^{n-1}-1) \sim +(2^{n-1}-1)$$
8位原码范围:-127 ~ +127
致命缺点(考研必考):
无法直接做减法运算,且0有两种表示,浪费编码空间,计算机不会用原码运算。
2. 反码:过渡型编码(仅用于推导补码)
核心定义:专为解决原码减法缺陷设计,是原码到补码的过渡编码,无独立运算意义。
编码规则:
- 正数:反码 = 原码(不变)
- 负数:符号位不变,数值位按位取反
8位反码例题:
- [+5]反 = 0000 0101
- [-5]反 = 1111 1010
考研重点:0的反码(仍有歧义)
- [+0]反 = 0000 0000
- [-0]反 = 1111 1111
n位反码取值范围:与原码一致 $$-(2^{n-1}-1) \sim +(2^{n-1}-1)$$
8位反码范围:-127 ~ +127
核心特点:依旧存在+0、-0问题,无法彻底解决减法运算,仅用于计算补码。
3. 补码:计算机真正使用的编码(重中之重)
核心定义:利用模运算思想,将减法完全转为加法,是计算机存储、运算的唯一编码,考研最高频考点!
编码规则:
- 正数:补码 = 原码 = 反码(全部不变)
- 负数:反码 + 1(符号位不变,数值位取反后加1)
8位补码例题:
- [+5]补 = 0000 0101
- [-5]反 = 1111 1010 → [-5]补 = 1111 1011
考研超级重点:0的补码(唯一无歧义)
这是补码取代原码、反码的核心原因!
- [+0]补 = 0000 0000
- [-0]补 = 1111 1111 + 1 = 1 0000 0000,舍弃进位,结果为0000 0000
0在补码中只有一种表示,节省1个编码空间!
n位补码取值范围(考研必考填空/选择):
$$-2^{n-1} \sim +(2^{n-1}-1)$$
8位补码范围:-128 ~ +127
关键易错点:8位补码 1000 0000 不代表-0,专门用来表示-128,这是原码、反码没有的数!
补码核心优势:
1. 0唯一,无编码冗余
2. 减法变加法,硬件只需加法器,电路更简单
3. 取值范围更大,充分利用二进制编码空间
🔥 **考研秒杀技巧:负数原码快速转补码(超省时方法)**
****常规「原码→反码→补码」两步法做题较慢**,考研选择题/填空题推荐一步秒杀法,无需逐位取反加一,正确率100%!**
快速转换口诀(必考):负数原码,**从右往左找第一个1,第一个1及其右侧所有比特位保持不变;左侧所有数值位按位取反,符号位全程不变**。
适用场景:所有负整数原码转补码,n位定点整数通用,极大提升解题速度,避免取反加1进位出错!
实战例题1:8位 [-5]原 转补码
[-5]原 = 1000 0101
步骤1:从右往左找第一个1,最末尾比特位为1,该位及右侧无位数,保持不变;
步骤2:第一个1左侧所有数值位(0000 01)全部按位取反;
步骤3:符号位1不变,最终结果:[-5]补 = 1111 1011(和传统算法结果完全一致)
实战例题2:8位 [-9]原 转补码
[-9]原 = 1000 1001
步骤1:最右侧第一个1固定不变;
步骤2:左侧数值位 000100 全部取反变为 111011;
步骤3:拼接符号位,得 [-9]补 = 1111 0111
技巧核心总结:
- 符号位:全程不动,不参与任何变换
- 右侧区间:末位第一个1 + 右边所有位 = 原样保留
- 左侧区间:第一个1左边的所有数值位 = 全部取反
该方法完美规避传统「取反+1」容易出现的进位错误、漏位错误,是考研考场最优解题方法!
1. 0唯一,无编码冗余
2. 减法变加法,硬件只需加法器,电路更简单
3. 取值范围更大,充分利用二进制编码空间
4. 移码:专属浮点数阶码的编码
核心定义:又称增码,仅用于浮点数阶码存储(考研唯一用途),核心作用是方便比较数值大小。
编码规则(最简公式):
移码 = 补码的符号位取反,数值位不变
n位移码偏移量固定为:$$2^{n-1}$$
8位移码例题:
- [+5]补 = 0000 0101 → [+5]移 = 1000 0101
- [-5]补 = 1111 1011 → [-5]移 = 0111 1011
- [-128]补 = 1000 0000 → [-128]移 = 0000 0000
考研重点特性:
1. 移码大小顺序 = 真值大小顺序,无需判断符号位,硬件对比速度更快
2. 0的移码唯一:[0]移 = 1000 0000(8位)
n位移码取值范围:与补码一致 $$-2^{n-1} \sim +(2^{n-1}-1)$$
三、四大码制速记表
|
码制 |
正数规则 |
负数规则 |
0的个数 |
8位取值范围 |
核心用途 |
|---|---|---|---|---|---|
|
原码 |
符号0+真值 |
符号1+绝对值 |
2个(+0/-0) |
-127~127 |
人工读数、直观展示 |
|
反码 |
同原码 |
符号1,数值位取反 |
2个(+0/-0) |
-127~127 |
补码过渡计算 |
|
补码 |
同原码 |
反码+1 |
1个(唯一) |
-128~127 |
计算机运算、存储 |
|
移码 |
补码符号位取反 |
补码符号位取反 |
1个(唯一) |
-128~127 |
浮点数阶码 |
四、考研高频易错点(避坑必看)
1. 只有补码可以表示-128,原码、反码8位最大负数只有-127
2. 负数码制完全不同:正数四码合一(原反补移数值位相同),负数全部不同
3. 移码不用于运算,只用于浮点数阶码比较,绝对不参与加减计算
4. 补码负数还原真值:先减1,再数值位取反,符号位不变
5. 所有码制符号位均不参与数值位运算,取反、加1均只针对数值位(负数)
总结
1. 原码、反码:适合人工阅读,存在双零问题,不用于计算机运算
2. 补码:考研核心、计算机底层唯一运算编码,零唯一、范围最大
3. 移码:专属浮点数阶码,核心作用是数值比较
4. 所有码制考点集中在:转换规则、取值范围、0的表示、特殊值-128
目标院校打卡✨ 全力以赴,奔赴心中理想!

6235

被折叠的 条评论
为什么被折叠?



