2.1 数据和文字的表示方法
2.1.1 数据格式
- 定点数
- 表示成纯小数/纯整数
- 形式:
- 为符号
- 为量值(尾数)
- 形式:
- 纯小数
- 小数点在 和 之间
- 纯整数
- 小数点在 右边
- 表示成纯小数/纯整数
- 浮点数
- 浮点数表示法
- 十进制
- 二进制
- 尾数
- 指数
- 机器浮点数标识
-
- : 阶符,指数正负
- : 阶码,指数
- : 数符,浮点数正负
- : 尾数
-
- 浮点数表示法
2.1.2 机器码表示
- 正整数
- 原码=反码=补码
- 负整数
- 反码=原码取反(不包括符号位)
- 补码=反码+1
- 0 表示
- 原码
- 00000000
- 10000000
- 反码
- 00000000
- 11111111
- 补码
- 00000000
- 0 在补码表示法中有唯一的表示
- 原码
- 移码表示
- 符号位与原反补码相反
- 1 为正
- 0 为负
-
- 为真值
- 为固定的偏移值常数( 为阶码位数)
- 符号位与原反补码相反
- 浮点数机器表示
- 32 位短浮点数
- 符号 :1 位
- 阶码 :8 位
- 尾数 :23 位
- 指数偏移值:127
- 64 位长浮点数
- 符号 :1 位
- 阶码 :11 位
- 尾数 :52 位
- 指数偏移值:1023
- 浮点数规格化表示
- 32 位短浮点数
2.1.3 字符与字符串表示
- 字符
- ASCII
- 8 位,最高位为 0
- 字符串
- 存在主存中连续的多字节
2.1.4 汉字表示
- 输入编码(输入)
- 数字编码
- 区位码(94 个区,94 位,二维数组)
- 拼音码
- 字形编码
- 笔画顺序
- 数字编码
- 汉字内码(内部处理)
2.字节最高为均为 1,与英文字符进行区别
- 若最高位用于奇偶校验位,则使用 3 字节
- 汉字字模码(输出)
- n x n 的点阵
2.1.5 校验码
- 奇校验位
- X 中包含奇数个 1 时,
- 偶校验位
- X 中包含偶数个 1 时,
- 奇偶校验进提供奇数个错误检测,无法检测偶数个错误,也无法定位错误位置。
2.2 定点加法、减法运算
2.2.1 补码加法
- 补码相加,结果再转回原码。
2.2.2 补码减法
- 将减数转成负数后进行加法运算(补码加法)。
2.2.3 溢出及检测
- 溢出
- 运算过程中,出现大于字长绝对值的现象。
- 正溢
- 大于机器字长能表示的最大正数。
- 负溢
- 小于机器字长能表示的最小负数。
- 变形补码
- 双符号位
- 00→01
- 正溢出
- 11→10
- 负溢出
- 00→01
- 双符号位
2.2.4 基本二进制加法/减法器
2.3 定点乘法运算
- 乘法运算
- 与十进制一样
- 每位依次与另一个乘数相乘再相加。
- 与十进制一样
- 不带符号的阵列乘法器
- 组成部分
- 加法器
- 移位器
- 对于两个n位数的乘法
- 需要的全加器
- 需要的与门
- 组成部分
- 带符号的阵列乘法器
- 符号扩展求补器
- 不带符号的乘法阵列
- 溢出处理求补器
2.4 定点除法运算
- 基础运算与十进制一样
- 恢复余数法
- 加减交替法
2.5 定点运算器的组成
2.5.1 逻辑运算
- 逻辑非
- 按位取反
- 逻辑加/或
- 逻辑乘/与
- 逻辑异/按位加
2.5.2 多功能算术/逻辑运算单元 ALU
- 使用不同的控制参数得到不同的组合函数,实现多种算术运算和逻辑运算。
2.6 浮点运算方法和浮点运算器
2.6.1 浮点加减法
-
- 计算流程
- 0 操作数检查
- 检查是否有 0 只,节省运算时间。
- 比较阶码大小并完成对阶
- 小数点位置是否对齐。
- 小阶向大阶看齐。
- 小数点左移一位,阶码+1
- 尾数加减运算
- 结果规格化
- 结果溢出
- 向右规格化
- 向左规格化
- 舍入处理
- 尾数右移,最低位会被丢掉,造成误差。
- 就近舍入
- 四舍五入
- 朝 舍入
- 简单截尾
- 朝 舍入
- 正数
- 多余位不全为 0,则向最低有效位进 1.
- 负数
- 简单截尾
- 正数
- 朝 舍入
- 负数
- 多余位不全为 0,则向最低有效位进 1.
- 正数
- 简单截尾
- 负数
- 溢出处理
- 阶码上溢
- 超过阶码能表示的最大值的正指数值,将其认为 和 。
- 阶码下溢
- 超过阶码能表示的最小值的负指数值,将其认为 0。
- 尾数上溢
- 最高位有进位,尾数右移,阶码+1 重新对齐。
- 尾数下溢
- 尾数右移,最低有效位进行舍入处理。
- 阶码上溢
- 0 操作数检查
2.6.2 浮点乘除法
- ,
- 计算步骤
- 浮点数的阶码运算
- 指数相加并用移码表示
- 尾数相乘
- 浮点数的阶码运算
- Example
2.6.3 浮点运算流水线?
2.2 定点加法、减法运算
- 2.2.1 补码加法
- 补码相加,结果再转回原码。
- 2.2.2 补码减法
- 将减数转成负数后进行加法运算(补码加法)。
- 将减数转成负数后进行加法运算(补码加法)。
- 2.2.3 溢出及检测
- 溢出
- 运算过程中,出现大于字长绝对值的现象。
- 正溢
- 大于机器字长能表示的最大正数。
- 负溢
- 小于机器字长能表示的最小负数。
- 变形补码
- 双符号位
- 00→01
- 正溢出
- 11→10
- 负溢出
- 00→01
- 双符号位
- 溢出
- 2.2.4 基本二进制加法/减法器
2.3 定点乘法运算
- 乘法运算
- 与十进制一样
- 每位依次与另一个乘数相乘再相加。
- 与十进制一样
- 不带符号的阵列乘法器
- 组成部分
- 加法器
- 移位器
- 对于两个n位数的乘法
- 需要的全加器
- 需要的与门
- 组成部分
- 带符号的阵列乘法器
- 符号扩展求补器
- 不带符号的乘法阵列
- 溢出处理求补器
2.4 定点除法运算
- 基础运算与十进制一样
- 恢复余数法
- 加减交替法
2.5 定点运算器的组成
- 2.5.1 逻辑运算
- 逻辑非
- 按位取反
- 逻辑加/或
- 逻辑乘/与
- 逻辑异/按位加
- 逻辑非
- 2.5.2 多功能算术/逻辑运算单元 ALU
- 使用不同的控制参数得到不同的组合函数,实现多种算术运算和逻辑运算。
- 使用不同的控制参数得到不同的组合函数,实现多种算术运算和逻辑运算。
2.6 浮点运算方法和浮点运算器
-
2.6.1 浮点加减法 { #3c1010b6-8af8-a6f9}
-
- 计算流程
- 0 操作数检查
- 检查是否有 0 只,节省运算时间。
- 比较阶码大小并完成对阶
- 小数点位置是否对齐。
- 小阶向大阶看齐。
- 小数点左移一位,阶码+1
- 尾数加减运算
- 结果规格化
- 结果溢出
- 向右规格化
- 向左规格化
- 舍入处理
- 尾数右移,最低位会被丢掉,造成误差。
- 就近舍入
- 四舍五入
- 朝 舍入
- 简单截尾
- 朝 舍入
- 正数
- 多余位不全为 0,则向最低有效位进 1.
- 负数
- 简单截尾
- 正数
- 朝 舍入
- 负数
- 多余位不全为 0,则向最低有效位进 1.
- 正数
- 简单截尾
- 负数
- 溢出处理
- 阶码上溢
- 超过阶码能表示的最大值的正指数值,将其认为 和 。
- 阶码下溢
- 超过阶码能表示的最小值的负指数值,将其认为 0。
- 尾数上溢
- 最高位有进位,尾数右移,阶码+1 重新对齐。
- 尾数下溢
- 尾数右移,最低有效位进行舍入处理。
- 阶码上溢
- 0 操作数检查
-
-
2.6.2 浮点乘除法
- ,
- 计算步骤
- 浮点数的阶码运算
- 指数相加并用移码表示
- 尾数相乘
- 浮点数的阶码运算
- Example
- ,
-
2.6.3 浮点运算流水线?