408选择题解析
计组
1.2
第一梯队:冯·诺依曼机的“老底子”(1~4题,23题)
【第1题】
+1
- 导师视角:这题是在送分。完整的计算机系统就像一个人,有肉体(硬件)还得有灵魂(软件)。选项A、B全是硬件;选项C里的“应用程序”只是软件的一小部分(缺了操作系统这种系统软件),只有D把两边都包圆了。选D。
【第2题】
+1
- 导师视角:冯·诺依曼机的祖传规矩是什么?“提前把程序存进内存,然后CPU一步步按顺序读指令执行”。这叫什么?这就叫“控制流驱动”(顺着指令流走)。别跟现在AI芯片的“数据流驱动”搞混了。选A。
【第3题】
+1
导师视角:找特点,死盯“按地址访问并顺序执行” 。选项D说“按内容选择地址” ,同学们,那是相联存储器(Cache/TLB)的VIP特权,普通主存没这本事,别给主存强行加戏。选B。
+1
【第4题】
+1
- 导师视角:这题考的是“软硬件逻辑等效性”。你能用C语言写出来的排序算法,我砸钱焊个专用芯片(硬件)一样能排。硬件快但成本高,软件慢但灵活。所以D选项说“软件功能不能用硬件取代” 纯属胡扯。选D。
【第23题(2019真题)】
- 导师视角:这题极阴险!C选项说“数据都在指令中直接给出” 。我问你,如果几GB的数据全塞在指令里,那还要巨大的内存条干嘛?实际情况是,指令里给的通常是数据的地址,CPU得拿着地址去存储器里取本尊。选C。
🧠 第二梯队:CPU与存储的“内鬼”(5~10题,19题,20题)
【第5题 & 第6题】
+3
- 导师视角:这两道题绑在一起秒杀。IR(指令寄存器)手里端着的是当前正在吃的饭;PC(程序计数器)眼睛盯着的是下一口饭在哪。看清题目问“当前”还是“下一条”。5选D,6选A。
【第7题】
- 导师视角:408老套路了!闭着眼睛背CPU三大件:运算器、控制器、通用寄存器。选项C的“地址译码器”是主存(内存)用来解析地址电信号的门卫大爷,它不属于经典CPU的内部结构(即便现代CPU把它集成进去了,逻辑上也不算)。选C。
【第8题】
+2
- 导师视角:MAR是“门牌号登记表”,大楼有几个房间它就要多长(对应地址码长度);MDR是“运货小推车”,房间门有多宽(对应存储字长),推车就得有多宽。选A。
【第9题】
+2
- 导师视角:运算器只管算,ALU和状态寄存器(记算出来的正负溢出)都在里面。但地址寄存器(MAR)是管访存找地址的,不归运算器管。选D。
【第10题】
+1
- 导师视角:存储器金字塔,离CPU核心越近越快。寄存器就在CPU里,最快;Cache在中间;内存最远,最慢。选C。
【第19题】
+1
- 导师视角:CPU的组成不包括主存(存储器)。运算器、控制器、内部寄存器才是CPU的肉体。选B。
【第20题】
+1
- 导师视角:相联存储器的拿手绝活是“按内容寻址”,但它同时也保留了“按地址寻址”的能力。选C。
🕵️♂️ 第三梯队:极易掉坑的“障眼法”(11题,12题)
【第11题】
+1
- 导师视角:拿笔把题干里的“8位的计算机系统”划掉!这是出题人故意放的烟雾弹。算地址空间只看地址线位数。16位地址线,寻址空间就是 216=65536 个。选C。
【第12题】
+1
- 导师视角:程序运行前必须加载到哪里?主存!外存(硬盘)里的只是死文件,进了主存才叫“活着的进程”。选B。
🗣️ 第四梯队:语言翻译的“鄙视链”(1318题,2122题,24题)
【第13题 & 第15题】
+4
- 导师视角:跟我建立这个比喻:编译就是“把外文书全部翻译成中文印出来”,以后看中文版就特别快(一次翻译生成目标程序,运行快);解释就是“请个同声传译”,边听边翻,不留存稿,所以运行速度慢得要死。因此第13题说解释程序运行快 是错的,选C。第15题“边翻译边执行”对应的就是解释(IV),选D。
【第14题 & 第21题】
+4
- 导师视角:这俩题本质一样。计算机硬件是文盲,只认0和1(机器语言)。汇编语言只是给人看的“助记符”。所以硬件能直接执行的永远只有机器语言程序。14题选C,21题选A。
【第16题 & 第17题】
导师视角:D错在哪?汇编语言是机器指令的符号化,Intel的汇编和ARM芯片的汇编完全是两码事,所以它强烈依赖机器结构 。第17题B选项说汇编指令能被计算机直接执行 ,扯淡,必须通过汇编器翻译才行。16选D,17选B。
+1
【第18题】
+1
导师视角:I 错,测试程序(Benchmark)再好也只能反映某方面的性能,不能“全面”代表 。II 对,系列机必须向后兼容(老软件能在新机器上跑) 。III 软硬件逻辑等价,绝对正确 。选C。
+2
【第22题(2016真题)】
- 导师视角:抓关键字!“高级语言”转换出“目标代码文件(.obj)” 。生成独立目标文件的,必须是“编译程序”。解释程序不生成文件。选C。
【第24题(2022真题)】
+1
- 导师视角:C语言编译的祖传流程,死记硬背四个字:“预、编、汇、链”。预处理(展开宏)→ 编译(转成汇编) → 汇编(转成机器码目标文件) → 链接(打包生成exe)。选A。
1.3
第一梯队:“字长”家族的恩怨情仇(第1、4、5、9题)
【第1题】 答案:D
- 导师视角:问你“机器字长”指什么。记住,机器字长就是CPU内部干活的“嘴巴大小”(ALU和通用寄存器的宽度),它决定了CPU一次能处理的定点整数的位数。选D。注意A选项,浮点数的位数跟机器字长无关,现在64位的机器照样能算80位的扩展双精度浮点数。
【第4题】 答案:C
- 导师视角:这题考三个字长的关系。我再说一遍:机器字长(CPU嘴巴多大)、指令字长(菜单上一道菜的名字多长)、存储字长(MDR的宽度,外卖盒多大),这三者没有任何必然的相等关系!它们可以相等,也可以成倍数,全看设计师怎么开心怎么来。所以II、III是对的。
【第5题】 答案:D
- 导师视角:找错误描述。D选项居然说“机器字长对硬件造价没影响”?同学们,寄存器从32位升级到64位,芯片面积要变大,引脚要翻倍,这全都是白花花的银子!违背常识的选项直接干掉。
【第9题】 答案:C
- 导师视角:跟第4题换汤不换药。问你单字长指令的长度。单字长指令的意思是“指令长度 = 机器字长”。那它跟存储字长有关系吗?没有固定关系。所以选C,无法确定。
⏱️ 第二梯队:速度、时间与吞吐量(第2、6、14题)
【第2题】 答案:B
- 导师视角:计算机运算速度跟什么有关?这题用排除法。A(主存容量)、C(硬盘大小)、D(光盘读取)这些都是存储空间的属性。只有B(主频和CPU字长)才是真正决定运算速度的核心硬件指标。挥铲子越快(主频高),铲子越大(字长长),干活就越快。
【第6题】 答案:C
- 导师视角:考“吞吐量”和“响应时间”的区别。打个比方:响应时间是你点了一份外卖,从下单到送到你手里花了多久;吞吐量是这个饭店一天能送出多少份外卖。所以“处理单个问题的时间”叫响应时间,选C。
【第14题】 答案:D
- 导师视角:问你哪个不影响机器速度。A主频肯定影响;B指令字长影响取指令的访存次数;C主存存取周期决定了CPU等内存的时间。只有D“磁盘容量”纯属来搞笑的,你硬盘装1T还是2T,跟CPU算1+1有多快有半毛钱关系吗?
👻 第三梯队:程序员的“透视眼”(第10题)
【第10题】 答案:B
- 导师视角:这题是统考高频坑!“透明”在计组里的意思是**“看不见”**。汇编程序员能看到什么?他能看到PC(要控制跳转)、状态寄存器(要判断进位溢出)、通用寄存器(要存数据)。但他绝对看不到Cache的替换算法,也看不到乘法器是怎么连线的,因为硬件自动帮他做了。所以对程序员透明(看不见)的选B。
🧮 第四梯队:CPI、主频与MIPS的逻辑拉扯(第3、7、8、11、12、13、15题)
【第3题】 答案:C
- 导师视角:MIPS是啥?Million Instructions Per Second,每秒执行几百万条指令。也就是 指令条数 / (执行时间 × 10^6)。直接秒选C。
【第7题】 答案:D
- 导师视角:这题极其容易选B(主频高速度就快)。错!执行时间不仅看主频,还得看CPI(一条指令花几个周期)和指令条数。你主频是别人的两倍,但如果你执行一条指令花的周期是别人的三倍,你照样是个弟弟。所以选D,不能确定。
【第8题】 答案:C
- 导师视角:找正确的。A选项:CPI是执行一条指令所需的平均时钟周期数,不同指令的CPI绝对不一样(加法1个周期,乘法可能要10个),所以A错。B选项:MIPS算的是综合执行速度,跟具体程序有关,B错。C是对的:主频越高,CPU时钟周期越短(两者互为倒数)。
【第11题】 答案:A
- 导师视角:这题考**基准程序(Benchmark)**的弱点。基准程序包含了很多种类的代码,但它依然有侧重点(偏向整数还是浮点?偏向访存还是计算?)。由于你的真实程序和基准程序的行为不可能完全一样,所以基准程序的跑分不能完全代表你跑真实程序的时间。选A。
【第12题】 答案:A
- 导师视角:问你什么因素不影响平均CPI。平均CPI是由:指令集架构(硬件设计)、计算机组织(流水线怎么排)和编译器(怎么挑指令)共同决定的。它唯独跟时钟频率(主频)无关!主频只决定一个周期有多长,不决定你需要几个周期。这题是个死知识点,必须背下来,选A。
【第13题】 答案:B
- 导师视角:在性能公式 T=(N×CPI)/f 里,微系统结构(比如有没有流水线)主要影响的是CPI;而指令集架构主要影响的是指令条数N和CPI;编译器影响的是N。选B。
【第15题】 答案:C
- 导师视角:这题是个小计算。机器A主频1GHz,CPI=2;机器B主频1.5GHz,CPI=2。A执行完要10秒,B要多久? 因为跑的是“相同的高级语言程序”,我们假设编译出来的指令条数 N 一样。 A的时间:TA=(N×2)/1G=10s⟹N=5×109。 B的时间:TB=(N×2)/1.5G=(5×109×2)/1.5G=10/1.5=6.67s。选C。
⚔️ 第一阵型:比例缩放与阿姆达尔(Amdahl)陷阱(第16、17、25、27、28题)
这类题的共同点是:不让你老老实实算绝对值,非要你算倍数和比例。
【第16题】 答案:B
- 导师视角:时间 A=20s,B=16s。问谁快,快多少。这题送分但容易选反。时间越短速度越快!速度比 = 时间的反比。VB/VA=TA/TB=20/16=1.25。秒选B。
【第17题】 答案:D
- 导师视角:这题前面讲过,再强调一次高分思维。时间要压缩到原来的 2/3(12秒变8秒),意味着速度要提上来;但新机器的周期数(工作量)又变成了 1.5倍。所以主频必须提升 1.5×1.5=2.25 倍。800MHz×2.25=1800MHz=1.8GHz。列复杂的方程你就输了。
【第25题(2012真题)】 答案:D
- 导师视角:超级巨坑! 100s的总时间里,CPU占90s,I/O占10s。题目说CPU速度提升50%。
- 防坑雷达:很多同学直接 100÷1.5。大错特错!CPU换了,外设没换啊! I/O的10秒是雷打不动的!
- 正确姿势:新CPU时间 = 90÷1.5=60s。总时间 = 60+10=70s。选D。
【第27题(2014真题)】 答案:D
- 导师视角:同样考比例。原时间 T=20s。优化后,指令数变 0.7 倍,CPI 变 1.2 倍。主频没提,默认不变。
- 秒杀:新时间 T′=0.7×1.2×T原=0.84×20=16.8s。就这么简单。
【第28题(2017真题)】 答案:C
- 导师视角:直接列式相除。T1=(N×2)/1.5G;T2=(N×1)/1.2G。
- T1/T2=(2/1.5)÷(1/1.2)=(4/3)×(6/5)=24/15=1.6。别算错数就行。
🧮 第二阵型:CPI与MIPS的硬核计算(第20、21、26、31、32题)
这是大题第一问最爱的题型。公式必须刻在DNA里:执行时间 = (指令数 × CPI) / 主频。
【第20题】 答案:D
导师视角:别嫌烦,老老实实算两遍。周期都是 2ns(主频500MHz)。
- 序列一:总时钟周期数 = 1×1+1×2+4×3=15。时间 = 15×2ns=30ns。MIPS=指令数6÷30ns×106=200。
- 序列二:总时钟周期数 = 2×1+1×2+2×3=10。时间 = 10×2ns=20ns。MIPS=指令数5÷20ns×106=250。
- 对比一下,序列二比一快10ns,MIPS多50。选D。
【第21题 & 26题】 答案:C / C
导师视角:这两题一模一样,都是加权平均算CPI。
- 21题 CPI = 1×0.6+2×0.18+4×0.12+8×0.1=2.24。时间 = 100条×2.24/40M=5.6×10−6s。
- 26题(2013真题) CPI = 2×0.5+3×0.2+4×0.1+5×0.2=3。MIPS = 主频 1.2G/CPI3/106=400。
警告:第21题题目说“共包含100条指令”,不是100万条!算时间时千万别自作主张乘个 106。
【第31题(2022真题)】 答案:A
- 导师视角:CPI = 1×0.8+10×0.2=2.8。
- 执行时间 = (10000×2.8)/109=28000×10−9s=28μs。
- 单位换算死穴:1ms=10−3s, 1μs=10−6s。这题要是选了C,出门别说是我带出来的!
【第32题(2023真题)】 答案:C
- 导师视角:指令执行速度 GIPS = 主频/CPI=1.5G/1.2=1.25GIPS(每秒 1.25G 条指令)。
- 时间 = 指令条数/速度=5×105÷(1.25×109)=4×10−4s=0.4ms。
🧠 第三阵型:概念辨析与常识陷阱(第18、19、22~24、29、30题)
这部分不考计算,考你的硬件直觉。
【第18题 & 19题】 答案:D / D
- 导师视角:评价性能的指标,MIPS、CPI、IPC(每周期指令数,CPI的倒数)、字长全部都能用。第19题,机器字长(一次能算多少位)直接决定了你算浮点数或大整数的精确度。
【第22题 & 23题】 答案:D / D
- 导师视角:问什么能缩短执行时间?只要是从硬件(提升主频、并行处理器、优化数据通路)或软件(编译器优化)上下手,都能!全选。
【第24题(2011真题)】 答案:D
- 导师视角:看到“浮点数操作速度”,不用看别的,秒选 MFLOPS (Million Floating-point Operations Per Second)。这是白给的。
【第29题(2020真题)】 答案:B
导师视角:这题含金量极高! 问哪些部件位数一定与机器字长相同?
拆解:机器字长=CPU内部数据通路的宽度。
- I. ALU(算术逻辑单元),干活的,必须同宽。
- III. 通用寄存器,存数据的,必须同宽。
- II. 指令寄存器(IR),它的宽度是由指令字长决定的,和机器字长没必然联系。
- IV. 浮点寄存器,它的宽度看遵循什么标准(比如IEEE754双精度是64位),现在32位的机器也能算64位浮点数,无关。选B。
【第30题(2021真题)】 答案:D
- 导师视角:这是个纯纯的“常识+数学”题。93.0146 PFLOPS,P 是多少?
- 记好这些前缀:K(103),M(106),G(109),T(1012),P(1015),E(1018)。
- 93×1015=9.3×1016。万亿是 1012,亿亿(一亿个一亿)是 1016。所以是9.3亿亿次。选D。
2.1
🎭 第一阵型:“原、补、反、移”的真假美猴王(第4、6、12、18~23题)
这部分题目专门考你对各种码制特殊值的敏感度。遇到这种题,不要去推导,直接调用“肌肉记忆”!
【看第4题】 答案:B
- 导师视角:问你谁对“0”的表示唯一?记住,原码和反码都有 +0 和 −0 两个鬼面孔。只有补码(全是0)和移码(最高位1,其余全0)对“0”的表示是唯一的。这不仅是这道题的答案,更是补码能比原码多表示一个底限负数(比如-128)的根本原因!
【看第6题】 答案:D
- 导师视角:送分题,但也是极易错题。已知 X 的补码,怎么快速求 −X 的补码?连同符号位在内,全部取反,末位加1! 别去管什么符号位不变,那是原码求反码的规矩,求相反数的补码,统统给我全部取反加1!
【看第18、20、21、23题:机器数反推真值】
导师视角:出题人最喜欢拿这几个特殊的二进制串搞你,跟我把这张**“统考VIP特权表”**刻在脑子里(以8位为例):
1000 0000:在原码里是 −0(等于0,选A);在补码里是神圣的 −128;在移码里是极小值 −128(选D,第21题)。0000 0000:在移码里是 −128(第23题选B,求相反数+128溢出)。1111 1111:在补码里永远是 −1(第20题选B);在移码里是极大值 +127(第19题选D)。
⚖️ 第二阵型:补码大小的“直觉判断”(第13、14、15题)
这是 2.1 节里最能拉开分差的地方!很多同学看到这种带未知数 xi 的题直接就懵了。
👨🏫 导师绝招:补码的“负权值”思维 不要把补码当成“原码取反加1”,在比较大小时,直接把最高位(符号位)当成负权重,其余位当成正权重! 比如7位补码 1,x1x2…x6,它的真实数值就是:−64+x1⋅32+x2⋅16+…
【看第13题】 答案:C
题目:[x]补=1,x1x2x3x4x5x6,要求 x>−32。
导师视角:直接套用负权值!因为符号位是1,这数的基础值是 −64。
- 如果 x1=0,那后面全填1最多也就是 −64+15=−49。−49 显然不大于 −32。所以 x1 必须是 1。
- 如果 x1=1,现在的总和是 −64+32=−32。题目要求大于 −32,所以后面 x2∼x6 至少得有一个是1,才能把数值往上拉(变成 -31, -30…)。直接秒选C!
【看第14题】 答案:C
题目:[x]补=1,x1x2x3x4x5,要求 x<−16。
导师视角:同样套路!基础值是 −32。
- 如果 x1=1,那总和变成了 −32+16=−16。后面哪怕全是0,也是 −16,不满足小于 −16。所以 x1 必须是 0。
- x1 是0了,基础值还是 −32。后面 x2∼x5 就算全填1,加上去最大也就是 −32+15=−17。−17 永远小于 −16。所以后面各位任意填都没关系!选C。
【看第15题】 答案:D
题目:[−x∗]补=[−x]补,x∗ 是绝对值。什么时候成立?
导师视角:这是极其阴险的陷阱题!一半人会选B(x为正数)。
- 常规思维:x∗ 是绝对值,所以左边永远是负数的补码。既然两边相等,说明 −x 也是负数,所以 x≥0。
- 408高分防坑雷达:记住补码的“不对称性”!补码能表示的范围是 [−128,+127]。如果是 −128,它的绝对值超出了正数范围,计算机算出来的 ∣−128∣ 依然是 −128(溢出)!所以,如果 x=−128,−x∗ 是 −128 补码
10000000,−x 算出来溢出依然是10000000。两边也相等! - 因为包含了这个极小值的特例,所以不能单纯说 x 是正数,选D(以上说法都不对)。
🎭 第三阵型:C语言的“画皮”游戏(第27、28、30、32、33题)
这部分是历年真题的最爱。你只需要记住老师总结的**“变脸两定律”**:
- 位扩展定律:短变长时,如果是无符号数(unsigned),高位统统补0;如果是有符号数,高位统统复制符号位。
- 强制转换定律:相同位数的 unsigned 和 signed 互相转换时,底层的 0/1 机器码绝对不会改变,一根毫毛都不变! 变的只是你怎么去“翻译”它。
【看第27题 & 28题(2012真题)】 答案:B / B
导师视角:
- 27题:16位
0x8FA0变 32位。先看最高位,8的二进制是1000,符号位是1!因为是补码扩展(有符号),高位必须全补1,十六进制就是全补F。变成0xFFFF 8FA0,选B。 - 28题:
unsigned short x = 65530变unsigned int。因为是无符号数,不管最高位是啥,高位只配补0!所以变成0000 FFFAH,选B。
- 27题:16位
【看第30题(2016真题)】 答案:D
题目:
short si = -32767,unsigned short usi = si。求 usi 的值。导师视角:
- 第一步:写出底层机器码。
-32767怎么写?记住 −32768 是1000...0,−32767 比它大 1,所以机器码是1000 0000 0000 0001。 - 第二步:戴上“无符号”的面具去读它。最高位的
1不再是负号,而是 215=32768。 - 第三步:算真值。32768+1=32769。一步到位,选D。
- 第一步:写出底层机器码。
【看第33题(2021真题)】 答案:D
题目:机器数 FFFDH, FFDFH, 7FFCH,比较有符号/无符号下的大小。
导师视角:直接看最高位剥掉伪装!
- FFFD(最高位1,负数);FFDF(最高位1,负数);7FFC(最高位0,正数)。
- 有符号数比较:7FFC 肯定是最大的,排除A、B。剩下俩负数怎么比?
- 回忆第一阵型的诀窍:负数补码里,数值部分(1越多)越大,越靠近0。FFFD 的末尾是 D(13),FFDF 的末尾是 F(15),表面看 F 大,但注意倒数第二位,FFFD 是 F(1111),FFDF 是 D(1101)。显然 FFFD 里面的1更多,更靠近0。
- 所以真值:FFDF < FFFD < 7FFC。也就是 y < x < z。选D。
第四梯队:基础定义与范围(送分必须拿稳)
包含题号:2、7、8、9、11、25、26、31、34
【第2题】 答案:B
- 导师视角:16位无符号数的范围。没有符号位拖后腿,16位全用来表示数值。最大值就是全1,也就是 216−1=65535。所以范围是 0∼65535。选B。
【第7题】 答案:C
- 导师视角:8位原码能表示“多少个”不同的数据?注意问的是“个数”!8位二进制本来有 28=256 种组合,但是在原码里,
00000000是 +0,10000000是 −0,两个码表示同一个真值0。所以得扣掉一个重复的:256−1=255 个。选C。
【第8题 & 第9题】 答案:B / D
- 导师视角:公式死记题!n 位带符号整数的最大值永远是 2n−1−1(第9题选D)。至于 n+1 位的原码范围(第8题),最高位是符号位,剩下 n 位是数值。最大值是 2n−1,最小值是对称的 −(2n−1),也就是 −2n+1。选B。
【第11题】 答案:C
- 导师视角:64位补码,1位符号位。问你绝对值最大的负数(其实就是问下限)。补码比原码牛的地方就在于它能多表示一个最小负数 −2n−1。总共64位,所以最小负数就是 −263。选C。
【第25题】 答案:D
- 导师视角:补码的特点。I 是对的(0表示唯一)。II 是对的(符号位直接参与运算,这是补码被发明的初衷)。IV 是对的(减法变加法)。III 错在哪?补码和真值的对应关系不直观,原码才是最直观的(直接看出来是多少)。所以选D(I, II, IV)。
【第26题】 答案:D
- 导师视角:主存地址(也就是内存地址,0x0000~0xFFFF)用什么码表示?地址不可能有负数!内存条里没有叫“-5号”的房间。所以地址一律使用无符号数。选D。
【第31题(2018真题)】 答案:D
- 导师视角:为什么用二进制?I. 算术规则简单;II. 制造两个稳态(高低电平)的物理器件容易;III. 逻辑门(与或非)方便实现算术运算。全对,常识题,闭眼选D。
【第34题(2022真题)】 答案:B
- 导师视角:考 32 位补码范围。下限是 −231,上限是 231−1。统考就喜欢这么直白地送分,选B。
🧮 第五梯队:编码转换与底层的数字游戏
包含题号:1、3、5、10、16、17、24、29
【第1题】 答案:B
- 导师视角:十进制 137.5 转八进制。整数部分 137÷8=17 余 1,17÷8=2 余 1,所以是 211。小数部分 0.5×8=4.0,所以是 .4。合起来 211.4。选B。
【第3题】 答案:D
- 导师视角:找错误的说法。这种题必考浮点数精度丢失的常识!任何二进制小数都能化成精确的十进制小数(因为 2−n 总是能被底数10整除,比如 0.5, 0.25, 0.125),但十进制小数未必能化成有限的二进制小数(比如 0.1 转二进制是无限循环的
0.000110011...)。所以D选项说“任何十进制小数都能用二进制表示”是极其荒谬的,选D。
【第5题】 答案:B
- 导师视角:已知 [X]原=1.1101010,求补码。第一步看符号:最高位是 1,负数!所以除符号位外全部取反得反码:
1.0010101。第二步末位加 1:1.0010110。选B。
【第10题】 答案:A
- 导师视角:这题是在考你数学。N位二进制能表示 2N 个数,N位十进制能表示 10N 个数。两者个数比值:2N/10N=(2/10)N=0.2N。选A。
【第16题】 答案:B
导师视角:十进制 −66 放进 8 位寄存器求十六进制。−66=−64−2。
- 先写 +66 原码:
0100 0010。 - 求 −66 补码(连同符号位全部取反加1):
1011 1101 + 1 = 1011 1110。 - 转十六进制:
1011是 B,1110是 E。所以是BEH。选B。
- 先写 +66 原码:
【第17题】 答案:C
导师视角:寄存器里是
9BH,这是补码,求十进制真值。- 展开
9BH:1001 1011。最高位是1,说明是负数。 - 用我的“负权值法”秒杀:−128+16+8+2+1=−101。选C。
- 展开
【第24题】 答案:A
导师视角:8位,2个”0”,6个”1”。怎么摆能得出最小或最大?
- 选项 A:看移码(偏置值127)。移码越小,符号位(最高位)必须是0,且数值位尽量小。所以把两个”0”放在最高和次高位,机器码是
0011 1111(也就是 63)。真值 = 机器码 - 偏置值 = 63−127=−64。A说法正确!不用看BCD了。
- 选项 A:看移码(偏置值127)。移码越小,符号位(最高位)必须是0,且数值位尽量小。所以把两个”0”放在最高和次高位,机器码是
【第29题(2015真题)】 答案:B
导师视角:8位二进制补码,3个”1”,5个”0”。求最小整数。
- 要求最小,必须是负数,所以最高位(符号位)必须是 1。
- 剩下2个”1”和5个”0”怎么排?利用“负权值法”:最高位是 −128,你要让这个数尽可能小(也就是负得越多越好),那正权重部分加得越少越好。
- 所以剩下的两个 “1” 要放在最低位!排成:
1000 0011。 - 算真值:−128+2+1=−125。选B。
2.2
第一梯队:运算器部件与 ALU 基础(第13题,910题)
【第1题】 答案:B
- 导师视角:ALU 是干活的,里面全是门电路,没有记忆功能,所以纯粹是组合逻辑电路。时序逻辑电路是那些带触发器、能存状态的(比如寄存器)。
【第2题】 答案:D
- 导师视角:老生常谈的陷阱!运算器里有状态寄存器(PSW)、数据总线、ALU。但**地址寄存器(MAR)**是负责找内存要数据的,归存储/控制逻辑管,不在运算器里。
【第3题】 答案:C
- 导师视角:ALU 全称 Arithmetic and Logic Unit。算术(加减乘除)和逻辑(与或非移位)它都包了。选C。
【第9题】 答案:C
- 导师视角:不管你是单符号位还是双符号位,只要做加减法,就一定可能超出范围。所以**溢出判断电路(通常用异或门实现)**是定点运算器必须标配的。
【第10题】 答案:A
- 导师视角:为什么会溢出?打个比方,你拿一个只能装 255 毫升水的小杯子,非要往里倒 300 毫升水,肯定溢出来。根本原因就是寄存器的位数(杯子大小)是有限的。
⏪ 第二梯队:移位运算与溢出防坑(第4~6题,8题,16题,20题,31题)
【第4题】 答案:B
- 导师视角:
01010101算术左移两位。最高位是0(正数),左移低位补0。移两位后变成01010100。虽然实际上它溢出了(顶部的01被挤掉了),但机器码就是老老实实这么截断的,选B。
【第5题】 答案:D
- 导师视角:补码左移不溢出的条件是什么?最高数值位必须和符号位一样! D选项
C0H是1100 0000。符号位是1,最高数值位也是1。左移一位变成1000 0000,符号没变,所以不溢出!
【第6题】 答案:D
- 导师视角:
10010101算术右移一位。最高位是1(负数),算术右移的规矩是高位补符号位。所以右边挤掉一个1,左边补一个1,变成11001010。
【第8题】 答案:C (⚠️ 导师抓虫:王道教材题目印刷有误!)
导师视角:题干说
BAH为原码,如果是原码,左移一位应该变成F4H,没有这个选项。这道题题干其实想说的是“补码”! 我们按补码算:BAH=1011 1010。- 算术左移1位(低位补0):
0111 0100=74H。 - 算术右移1位(高位补符号位1):
1101 1101=DDH。选C!把书上“原码”两个字划掉改补码!
- 算术左移1位(低位补0):
【第16题】 答案:B
- 导师视角:这就是第5题的公式化表达。补码左移什么时候溢出?当你把与符号位不同的数挤到符号位上时。即 X0=X1。
【第20题】 答案:D
- 导师视角:I 左移前后符号变了就是溢出,对。II 无符号左移最高位移出1,说明丢了有效数据,溢出,对。III 逻辑左移和算术左移的“动作”确实一模一样(都是丢高位补低位0),只是算术移位会去查标志位。全对,选D。
【第31题(2018真题)】 答案:B
- 导师视角:
1101 1000。逻辑右移(无脑补0):0110 1100。算术右移(看符号位补,它是1就补1):1110 1100。一眼秒杀。
➕ 第三梯队:加减法与双符号位(第7题,1115题,2729题)
【第7题】 答案:C
- 导师视角:纯十六进制加法
7E5H + 4D3H。5+3=8;E+D(14+13=27),27满16进1余11 (B),写 B 进 1;7+4+1=C。连起来CB8H。
【第11题】 答案:C
导师视角:8位补码范围
[-128, 127]。r1 = F5H(-11),r2 = EEH(-18)。- 试一下乘法:-11 × -18 = +198。198 直接干碎了上限 127,绝对溢出!选C。
【第12题】 答案:B
- 导师视角:模4补码(双符号位)在存储器(内存)里存的时候,只存一个符号位,只有被调到 ALU 里计算时,才会复制出两个符号位来判断溢出。选B。
【第13题】 答案:B
- 导师视角:双符号位判断法:
00正常正,11正常负。01正溢出(两个正数加出了负数),10负溢出。问两个正数相加溢出,那肯定是01。
【第14题】 答案:D
- 导师视角:单符号位进位判断法:符号位进位 (C0) ⊕ 最高数值位进位 (C1) = 1 时溢出。也就是说,要么 C0 进 C1 不进,要么 C0 不进 C1 进。对应 V 和 VI。
【第15题】 答案:C
- 导师视角:跟 13 题呼应,
10代表两个负数加出了正数,叫做负溢出。
【第27题(2010真题)】 答案:B
- 导师视角:同第 11 题。
r2 = F2H(-14),r3 = 90H(-112)。相乘等于 +1568,远超 127,溢出。
【第28题(2013真题)】 答案:A
导师视角:x=11110100 (-12),y=10110000 (-80)。求 2x+y/2。
- 2x=−24,补码是
1110 1000。 - y/2=−40,补码是
1101 1000。 - 两个补码相加:
1110 1000 + 1101 1000 = 1 1100 0000。丢弃最高位溢出进位,剩下1100 0000。其实算真值 −24−40=−64,-64 的补码就是11000000。
- 2x=−24,补码是
【第29题(2014真题)】 答案:C
- 导师视角:x=103,y=−25。问哪个溢出。直接算真值!A=78,B=-128(刚好在下限,不溢出!极易踩坑),C = 103 - (-25) = 128(上限是127,超了!),D = -78。选C。
✖️ 第四梯队:原码乘法(第17~19题,35题)
【第17题】 答案:A
- 导师视角:原码乘法就是人类最原始的习惯:符号不管,绝对值相乘,最后看正负。选A。
【第18题 & 19题】 答案:B / C
- 导师视角:紧接上题,18题原码乘法中符号位不参加运算(选B)。19题符号怎么定?正正得正,正负得负,这不就是同0异1吗?所以是用异或门(选C)。
【第35题(2024真题)】 答案:D
- 导师视角:常识题。不管是不是变量,乘法在底层都可以被编译器拆解成移位 + 加减法的循环来执行(早期的 CPU 连乘法器都没有,全靠这么算)。D 说无法转换,大错特错。
🚩 第五梯队:标志位(CF/OF)底层硬核计算(第2124题,30题,3233题)
(重点警告:408 大题第一问最爱考,看仔细!)
【第21题】 答案:B
导师视角:计算 x−y。底层加法器怎么做?减法变加法:x+not(y)+1。
- x=01000101。
- y=00100110,not(y)=11011001。
- 末位还要加一个 1,所以低位进位信息必定为 1(代表减法借位)。直接锁定 B!
【第22题】 答案:A
导师视角:x=F5H(负数),y=7EH(正数)。算 x−y。
- 减法,低位进位肯定是 1。
- OF 溢出标志怎么看?看有符号数真值!负数减正数,等于两个负数相加。F5H(-11) 减 7EH(126) = -137。下限是 -128,所以爆缸了,溢出!OF = 1。选A。
【第23题 & 24题】 答案:C / A
导师视角:x=44H(+68),y=DCH(−36)。
- 23题:x/2+2y=34−72=−38。没超出 [-128, 127],不溢出,OF=0。选C。
- 24题:x−2y=68−(−72)=140。超出了 127,溢出!OF=1。选A。
【第30题(2018真题)】 答案:C
导师视角:x=FFFFFFDFH(−33),y=00000041H(65)。
- x−y=−33−65=−98。没有溢出(在32位里简直九牛一毛)。
- −98 怎么转十六进制?−98=−128+30。低8位是
1001 1110(9EH),高位全补1 (F)。所以是FFFFFF9EH。选C。
【第32题(2018真题)】 答案:A
导师视角:
R1 = FFFFFFFFH (-1),R2 = FFFFFFF0H (-16)。- 算 R1 - R2。有符号看 OF:−1−(−16)=+15,没溢出,OF = 0。
- 无符号看 CF:比较 R1 和 R2 谁大。R1 全是 F 是最大的数,R2 比它小。大数减小数,不需要借位!所以 CF = 0。选A。
【第33题(2023真题)】 答案:B
导师视角:x=10,y=−20。执行 x−y。
- 有符号看 OF:10−(−20)=30,没溢出,OF = 0。
- 无符号看 CF:注意!在无符号眼里,x=10 极小,而 y 的机器数最高位是 1,是个极大的数(接近 42 亿)。10 减去 42 亿,必然不够减,必须借位!所以 CF = 1。选B。
🧑💻 第六梯队:C语言强转与越界骗局(第25~26题,34题)
【第25题】 答案:A
导师视角:
int si = 65536; short i = si;。65536 的二进制是1 0000 0000 0000 0000(17位)。截断成 16 位的 short,只剩下后面的全 0,所以 i=0。unsigned j = 0。i <= j-1,即0 <= 0 - 1。因为j是无符号的,0-1下溢变成了无符号最大值 UMAX。0 小于最大值,成立,打印“王道”。- 无符号比较看什么标志位?看 CF 标志位!选A。
【第26题(2009真题)】 答案:D
导师视角:
int x = 127 (0x7F),short y = -9。- -9 的 16 位补码是
FFF7H。 - 相加时,short 自动转 int,高位符号位补全:
FFFF FFF7H。 - z=127+(−9)=118。118 的十六进制是
76H,存为 int 就是0000 0076H。选D。
- -9 的 16 位补码是
【第34题(2024真题)】 答案:B
导师视角:
int i = 32777; short si = i;。- 32777 = 32768 + 9 =
0x8009。截断给 short 还是0x8009。 0x8009戴上有符号 short 的帽子,最高位变成负号,真值是 −32768+9=−32759。- 再转回 int,符号位扩展,依然是
-32759。选B。
- 32777 = 32768 + 9 =