运算方法、运算电路与浮点数
掌握全加器、串行与先行进位加法器和 ALU,补码加减运算器与 ZF、SF、CF、OF 标志位的生成和溢出判断,乘除运算的基本原理与电路结构,C 语言整数运算的溢出;掌握 IEEE 754 单精度与双精度格式和浮点数加减运算的步骤。
本节导读
接着上一节,这一节讲「数据的表示和运算」的后半部分:运算方法和运算电路(加法器、ALU、补码加减运算器、标志位、乘除运算),整数和浮点数的运算,IEEE 754 标准。
这一节的题目分两类:一类是「给两个数,算结果和标志位」,一类是「给一个 32 位浮点数的机器码,求真值」或反过来。学完你应该能判断加减法的溢出、写出四个标志位,并能在十六进制机器码与浮点数真值之间互相转换。
加法器与 ALU
一位全加器的和与进位:
Si=Ai⊕Bi⊕Ci Ci+1=AiBi+(Ai⊕Bi)Ci把 n 个全加器串起来,低位的进位依次传到高位,叫串行(行波)进位加法器,结构简单但慢,延迟与位数成正比。先行进位(并行进位)加法器设进位生成函数 Gi=AiBi、进位传递函数 Pi=Ai⊕Bi,则 Ci+1=Gi+PiCi,逐级展开:
C1=G0+P0C0 C2=G1+P1G0+P1P0C0每个进位都只依赖 G、P 和 C0,可以同时算出,速度快。算术逻辑单元 ALU 以加法器为核心,再加上逻辑运算电路,由功能选择信号决定做哪种运算,它是组合逻辑电路,本身不能存储结果。
补码加减运算与标志位
补码运算的规则:[A+B]补=[A]补+[B]补,[A−B]补=[A]补+[−B]补。补码加减运算器只用一个加法器:减法时控制信号 Sub = 1,B 的每一位经异或门取反,同时 Sub 作为最低位的进位输入,正好完成「取反加 1」。
运算后生成的标志位:
| 标志 | 含义 | 生成方法 |
|---|---|---|
| ZF 零标志 | 结果为 0 | 结果各位全 0 时为 1 |
| SF 符号标志 | 结果为负(按带符号数看) | 等于结果的最高位 |
| CF 进位/借位标志 | 按无符号数运算是否越界 | CF = 最高位进位 ⊕ Sub |
| OF 溢出标志 | 按带符号数运算是否溢出 | OF = 最高位进位 ⊕ 次高位进位 |
带符号数溢出的三种判断方法:两个同号数相加(或异号数相减)结果符号与之相反;最高位的进位与次高位的进位不同;用双符号位(变形补码)时,两个符号位为 01 表示正溢出、10 表示负溢出。异号数相加、同号数相减不会溢出。
乘除运算
原码一位乘法:符号位单独由两数符号异或得到,数值部分像手算一样「看乘数的一位,加被乘数或加 0,部分积右移一位」,共 n 步。补码一位乘法(Booth 算法)让符号位直接参加运算,每步看乘数相邻两位 yiyi+1(最低位后面附加一位 0):
| yiyi+1 | 操作 |
|---|---|
| 00 或 11 | 部分积直接算术右移一位 |
| 01 | 部分积加 [x]补,再算术右移一位 |
| 10 | 部分积加 [−x]补,再算术右移一位 |
乘法电路的基本结构是:部分积寄存器、乘数寄存器(可右移)、被乘数寄存器、加法器和计数器,用加法和移位循环实现;速度要求高时用阵列乘法器。除法的基本原理是「上商、移位、减除数」:原码恢复余数法在余数为负时要先加回除数;不恢复余数法(加减交替法)余数为正时上商 1、左移后减除数,为负时上商 0、左移后加除数。除法电路由余数寄存器、商寄存器(可左移)、除数寄存器、加法器和计数器组成。
C 语言的整数运算按位数取模:32 位 int 的乘法结果超出范围时只保留低 32 位,不报错;无符号数做 2n 取模的运算。整数除以 2k 可以用移位实现,但负数算术右移是向下取整,C 语言的除法是向 0 取整,编译器会先加一个偏置再移位。
IEEE 754 浮点数
浮点数写成 (−1)s×1.f×2e−偏置:
| 格式 | 符号 s | 阶码 e | 尾数 f | 偏置 |
|---|---|---|---|---|
| 单精度 float | 1 位 | 8 位 | 23 位 | 127 |
| 双精度 double | 1 位 | 11 位 | 52 位 | 1023 |
本节后面还有约 1637 字:报名学员看全文
每门课前 10 节免费看全文;从第 11 节起,完整教程要报名后由顾问在后台为你的账号开通才能看。
题库账号可以直接登录,但第 11 节起的完整教程要报名后由后台开通才能看。
学完练一练
按本节考点从本课的课后练习里抽题(每次 10 道以内),做完看解析、错题自动进错题本。第 11 节起的课后练习报名学员才能练。
本节内容由 AI 辅助编写,配图由 AI 生成,仅供备考参考;考试要求以《全国各类成人高等学校招生考试大纲(2024 年版)》及浙江省教育考试院当年公布为准。