✍️ 前言
作为一名27 考研选手,计组的定点数运算是 408 基础中的“重灾区”。今天的笔记重点在于移位规则与溢出判断。拒绝云玩家,直接上硬核干货,建议收藏作为考前速查手册。
一、 移位运算:逻辑 vs 算术
移位运算在底层电路中效率极高,是乘除法的基础。
1. 逻辑移位 (Logical Shift)
逻辑移位不考虑符号位,将操作数视为无符号数。
- 规则:左右移位,缺位一律补 0。
- 口诀:逻辑移位最简单,空位统统补零蛋。
2. 算术移位 (Arithmetic Shift)
算术移位需要保证符号位不变,规则相对复杂(笔记重点):
- 基本原则:
- 左移:低位缺位补 0(若高位丢弃的不是符号位,则可能溢出)。
- 右移:高位缺位补符号位(保证正负性不变)。
💡 必要的补充(实战避坑):
对于补码而言:
- 正数:移位规则同原码(左右补 0)。
- 负数:左移补 0,右移补 1。
二、 溢出判断:三大必考法
在加减运算中,当结果超出机器数表达范围时会产生溢出。笔记总结了三种高效判定法:
1. 判定法 ①:单符号位比较法
- 方法:观察操作数与结果的符号位。
- 逻辑:只有当两个符号相同的数相加(或符号相反的数相减)时才可能溢出。
- 若:正 + 正→\rightarrow→结果为负(溢出)。
- 若:负 + 负→\rightarrow→结果为正(溢出)。
2. 判定法 ②:进位位异或法(OF位)
这是电路实现最常用的方法。
- 公式:OF=Cout⊕Cin_signOF = C_{out} \oplus C_{in\_sign}OF=Cout⊕Cin_sign
- 判定:
- OF=1OF = 1OF=1:发生溢出。
- OF=0OF = 0OF=0:未发生溢出。
注:CoutC_{out}Cout为符号位的进位,Cin_signC_{in\_sign}Cin_sign为最高数值位向符号位的进位。
3. 判定法 ③:双符号位法(变形补码)
采用两位符号位:000000表示正,111111表示负。
- 结果规律:
- 000000:结果为正,无溢出。
- 111111:结果为负,无溢出。
- 010101:正溢出(第一位000表示结果应为正,第二位111表示实际计算溢出了)。
- 101010:负溢出(第一位111表示结果应为负,第二位000表示实际计算溢出了)。
三、 标志位与减法特殊处理
在 408 考研大题中,标志位的计算是必考点。
1. 异或逻辑 (⊕\oplus⊕)
- 口诀:同 0 异 1。
2. 进位/借位标志CFCFCF(Carry Flag)
笔记中给出了非常实用的减法判定公式:
- 公式:CF=Cout⊕subCF = C_{out} \oplus subCF=Cout⊕sub
- 说明:* 在加法中,sub=0sub=0sub=0,CF=CoutCF = C_{out}CF=Cout。
- 在减法中,sub=1sub=1sub=1,CF=not CoutCF = \text{not } C_{out}CF=notCout(即最高位进位取反)。
四、 实战例题演练(线性代数彩蛋)
在整理笔记时,顺便回顾了今天的线代高频考点。例如对于三阶矩阵AAA的代数余子式计算:
题目:已知三阶矩阵AAA第一行元素为(2,5,6)(2, 5, 6)(2,5,6),第二行的代数余子式分别为x+1,x2−1,x+5x+1, x^2-1, x+5x+1,x2−1,x+5,求xxx。
解析(利用“异乘变零”性质):
根据定理:某行元素与另一行代数余子式乘积之和为 0。
2(x+1)+5(x2−1)+6(x+5)=02(x+1) + 5(x^2-1) + 6(x+5) = 02(x+1)+5(x2−1)+6(x+5)=0
2x+2+5x−5+6x+30=02x + 2 + 5x - 5 + 6x + 30 = 02x+2+5x−5+6x+30=0
13x=3−3013x = 3 - 3013x=3−30
x=−2713x = -\frac{27}{13}x=−1327
🚀 结语
复习之路虽然辛苦,但只要逻辑化、系统化,408 也不在话下。脚踏实地,死磕基础。愿这篇笔记能成为你进阶路上的破局点!
本文由 [05候补工程师] 整理,旨在分享 408 考研实战技巧,拒绝云玩家,每一行代码和逻辑都是亲身踩坑的总结。