数制与编码
进位计数制及其相互转换
定点数的编码表示
- 机器数的定点表示
- 定点小数
- 定点整数
- 原码、补码、反码、移码
整数的表示
运算方法和运算电路
基本运算部件
- ALU的核心部件是(带标志)加法器
- 一位全加器(FA)
- 输入
- 低位进位
- 操作数
- 输出
- 和
- 进位
- 输入
- 串行进位加法器(串行进位的并行加法器)
- 并行加法器
- 线性进位部件(超前进位部件)(CLA部件)
- 快速
- 复杂
- 可以通过串接CLA实现更多位数的加法
- 带标志加法器
- ALU
- 功能
- 算术运算
- 带标志加法器
- 加
- 减
- 乘
- 除
- 带标志加法器
- 逻辑运算
- 算术运算
- 基本结构
- ALUop
- MUX
- 功能
定点数的移位运算
- 算术移位(对象是有符号数)
- 逻辑移位(一律视为无符号数)
- 循环移位
- 带进位标志位CF的循环移位(大循环)
- 不带进位标志位CF的循环移位(小循环)
- ❗️❗️❗️CF的值也会变,其值变为移出的那个位
定点数的加减运算
- 补码的加减法运算
- 补码加减运算电路
- OF对于无符号数运算无意义,对于有符号数OF=1时表示发生溢出
- ZF=0表示结果为0
- SF对于无符号数运算无意义,表示结果的符号
- CF对于有符号数无意义,,等于1时表示发生溢出(加法溢出、减法借位)
- 溢出判别方法
- 采用一位符号位:
- 采用双符号位:
- 采用一位符号位根据数据为的进位情况判断溢出
- 原码的加减法运算(了解)
定点数的数乘运算
- 定点数的乘法运算
- 原码一位乘法
无符号数乘法运算电路- 补码一位乘法(Booth算法)
补码乘法运算电路
- 定点数的除法运算
- 符号扩展
- 原码除法运算(不恢复余数法)(原码加减交替法)
- 恢复余数法
- 补码除法运算(加减交替法)
除法运算电路
C语言中的整数类型及类型转换
- 有符号数和无符号数的转换->存储内容不变,解读方式变化
- 不同字长整数之间的转换
- 长变短:直接截断
- 短变长
- 有符号
- 无符号
数据的存储和排列
- 数据的“大端方式”和“小端方式”存储
- 数据按“边界对齐”方式存储
浮点数的表示与运算
浮点数的表示
- 浮点数的表示格式
- 数符(S)
- 尾数(M)
- 阶码(E)
- 浮点数的表示范围
- 上溢
- 正上溢
- 负上溢
- 下溢
- 正下溢
- 负下溢
- 上溢
- 浮点数的规格化
- 何为规格化
- 左规
- 右规
- IEEE 754标准
- 短浮点数(单精度、float)
- 长浮点数(双精度、double)
- 临时浮点数
- 隐藏位
- 偏置值
- 表示范围
- 阶码全0或全1时的解释(4)
- 定点、浮点表示的区别
浮点数的加减运算
- 对阶
- 尾数求和
- 规格化
- 舍入
- 溢出判断
- C语言涉及浮点数的数值转换
AT&T格式与Intel格式的比较
| 项目 | AT&T | Intel |
|---|---|---|
| 大小写 | 只能小写 | 不敏感 |
| 顺序 | 源操作数在前 | 目的操作数在前 |
| 特殊符号 | %表示寄存器,$表示立即数 | |
| 内存寻址 | () | [] |
| 偏移寻址 | 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