【计算机组成原理】一文吃透原码、反码、补码、移码(全网最易懂+必考真题)

🔥 考研计组核心考点!码制是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

目标院校打卡✨ 全力以赴,奔赴心中理想!


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值