2.1 机器数表示

真值与机器数
真值是带有"+"或"−"符号的实际数值;机器数是数据在计算机中的二进制表示,符号位数字化(0 正 1 负)。

四种常见机器数编码

设机器字长为 n+1 位(1 位符号位 + n 位数值位),真值 X:

编码定义正数 X=+25负数 X=−25特点
原码符号位 + 绝对值0 00110011 0011001表示简单,0 有两种表示
反码正数同原码;负数符号位不变数值位取反0 00110011 1100110过渡编码,0 有两种表示
补码正数同原码;负数反码 + 10 00110011 11001110 唯一,加减统一
移码补码符号位取反1 00110010 1100111用于阶码,便于比较大小
重要结论:正数的原码、反码、补码相同;负数补码 = 反码 + 1。补码的表示范围不对称:n+1 位补码范围为 −2ⁿ ~ 2ⁿ−1(多表示一个最小负数)。

补码的关键性质

2.2 定点数表示与运算

定点数是小数点位置固定的数,分为定点小数(小数点在符号位之后,范围 −1 ~ 1−2⁻ⁿ)和定点整数(小数点在末位之后)。

补码加减法

补码加减法统一为加法运算:[X±Y]补 = [X]补 + [±Y]补。其中 [−Y]补 由 [Y]补 连同符号位取反加 1 得到。

溢出判断
  • 单符号位法:参加运算两数符号相同,结果符号与之不同则溢出。
  • 进位法:符号位进位与最高数值位进位不同则溢出。
  • 变形补码(双符号位)法:双符号位 00 正、11 负为正常;01 正溢出、10 负溢出。

乘法与除法

算法核心思想乘数/余数处理
原码一位乘符号位单独异或,绝对值相乘乘数末位为1则加 |X|,右移
补码一位乘(Booth)根据乘数末两位判断加减10 加 [−X]补,01 加 [X]补,算术右移
原码加减交替除余数正减除数,余数负加除数上商、左移

2.3 浮点数表示与运算

浮点数
形如 N = M × Rᴱ,其中 M 为尾数,E 为阶码,R 为基数(通常 R=2)。计算机中阶码用移码、尾数用补码或原码表示。

IEEE 754 标准

格式总位数符号 S阶码 E(移码)尾数 M(隐含1)偏置值
短实数(单精度)321 位8 位23 位127
长实数(双精度)641 位11 位52 位1023

规格化数真值 = (−1)ˢ × 1.M × 2^(E−偏置)。尾数隐含最高位 1,节省 1 位存储。

浮点加减法步骤

关键:浮点数溢出判断看阶码,而非尾数。尾数溢出可通过右规处理;只有阶码超出表示范围才是真正溢出。

2.4 ALU 与加法器

ALU (Arithmetic Logic Unit)
运算器的核心部件,由加法器、移位器、逻辑运算部件及多路选择器组成。加法器是 ALU 的核心。

全加器逻辑:和 Sᵢ = Aᵢ ⊕ Bᵢ ⊕ Cᵢ₋₁;进位 Cᵢ = AᵢBᵢ + (Aᵢ⊕Bᵢ)Cᵢ₋₁。其中 Gᵢ = AᵢBᵢ 为进位生成,Pᵢ = Aᵢ⊕Bᵢ 为进位传递。

2.5 数据校验码

为发现/纠正传输与存储中的错误,常使用校验码: