• 约 4 分钟

计算机组成原理·数据的表示和运算

数制与编码

进位计数制及其相互转换

定点数的编码表示

  • 机器数的定点表示
    • 定点小数
    • 定点整数
  • 原码、补码、反码、移码

整数的表示

运算方法和运算电路

基本运算部件

  • ALU的核心部件是(带标志)加法器
  • 一位全加器(FA)
    • 输入
      • 低位进位Ci−1C_{i-1}
      • 操作数Ai,BiA_i,B_i
    • 输出
      • 和Si=Ai⊕Bi⊕Ci−1S_i=A_i\oplus B_i\oplus C_{i-1}
      • 进位Ci=AiBi+(Ai⊕Bi)Ci−1C_i=A_iB_i+(A_i\oplus B_i)C_{i-1}
  • 串行进位加法器(串行进位的并行加法器)
  • 并行加法器
    • 线性进位部件(超前进位部件)(CLA部件)
    • 快速
    • 复杂
    • 可以通过串接CLA实现更多位数的加法
  • 带标志加法器
    • OF=Cn⊕Cn−1OF=C_n\oplus C_{n-1}
    • SF=Fn−1SF=F_{n-1}
    • ZF=1当且仅当F=0ZF=1当且仅当F=0
    • CF=Cout⊕CinCF=C_{out}\oplus C_{in}
  • ALU
    • 功能
      • 算术运算
        • 带标志加法器
          • 加
          • 减
          • 乘
          • 除
      • 逻辑运算
    • 基本结构
      • ALUop
      • MUX

定点数的移位运算

  • 算术移位(对象是有符号数)
  • 逻辑移位(一律视为无符号数)
  • 循环移位
    • 带进位标志位CF的循环移位(大循环)
    • 不带进位标志位CF的循环移位(小循环)
      • ❗️❗️❗️CF的值也会变,其值变为移出的那个位

定点数的加减运算

  • 补码的加减法运算
  • 补码加减运算电路
    • OF对于无符号数运算无意义,对于有符号数OF=1时表示发生溢出
    • ZF=0表示结果为0
    • SF对于无符号数运算无意义,表示结果的符号
    • CF对于有符号数无意义,CF=Cin⊕Cout=Sub⊕CoutCF=C_{in}\oplus C_{out}=Sub\oplus C_{out},等于1时表示发生溢出(加法溢出、减法借位)
  • 溢出判别方法
    • 采用一位符号位:V=AsBsS‾s+A‾sB‾sSV=A_sB_s\overline S_s+\overline A_s\overline B_s S
    • 采用双符号位:V=Ss1⊕Ss2V=S_{s1}\oplus S_{s2}
    • 采用一位符号位根据数据为的进位情况判断溢出
  • 原码的加减法运算(了解)

定点数的数乘运算

  • 定点数的乘法运算
    • 原码一位乘法
    • 无符号数乘法运算电路
    • 补码一位乘法(Booth算法)
    • 补码乘法运算电路
  • 定点数的除法运算
    • 符号扩展
    • 原码除法运算(不恢复余数法)(原码加减交替法)
    • 恢复余数法
    • 补码除法运算(加减交替法)
    • 除法运算电路

C语言中的整数类型及类型转换

  • 有符号数和无符号数的转换->存储内容不变,解读方式变化
  • 不同字长整数之间的转换
    • 长变短:直接截断
    • 短变长
      • 有符号
      • 无符号

数据的存储和排列

  • 数据的“大端方式”和“小端方式”存储
  • 数据按“边界对齐”方式存储

浮点数的表示与运算

浮点数的表示

  • 浮点数的表示格式
    • N=(−1)S×M×REN=(-1)^S\times M\times R^E
    • 数符(S)
    • 尾数(M)
    • 阶码(E)
    • [数符∣阶码∣尾数][数符|\quad阶码\quad|\quad\quad尾数\quad\quad]
  • 浮点数的表示范围
    • 上溢
      • 正上溢
      • 负上溢
    • 下溢
      • 正下溢
      • 负下溢
  • 浮点数的规格化
    • 何为规格化
    • 左规
    • 右规
  • IEEE 754标准
    • 短浮点数(单精度、float)
    • 长浮点数(双精度、double)
    • 临时浮点数
    • 隐藏位
    • 偏置值
    • 表示范围
    • 阶码全0或全1时的解释(4)
  • 定点、浮点表示的区别

浮点数的加减运算

  • 对阶
  • 尾数求和
  • 规格化
  • 舍入
  • 溢出判断
  • C语言涉及浮点数的数值转换

AT&T格式与Intel格式的比较

项目AT&TIntel
大小写只能小写不敏感
顺序源操作数在前目的操作数在前
特殊符号%表示寄存器,$表示立即数
内存寻址()[]
偏移寻址disp(base,index,scale)[base+index*scale+disp]
操作数大小操作数后紧跟一个字符b, w或l操作码后显式地注明byte ptr, word ptr或dword ptr

注意 byte 8位,word 16位,long/dword 32位 若未指明读写长度,默认32bit

林威
林威 咖味十足的软件工程师