概述
一、基本概念
-
ASCII编码
- 0~31:控制字符
- 32:空格SP
- 32~126:95个可印刷字符(0、9分别为48和57,即011 0000和 011 1001)
- 127:EDL码
-
国标码、区位内码、汉字内码
- 国标码 = (区位码)16 +2020H
- 汉字内码:方便计算机区分中文字符和英文字符(国标码)16 +8080H
-
正负数不同码制算术位移规则:
-
加减乘除运算
-
原码定点数的运算
- 加:先判断符号位,不同则做减法;相同取绝对值符号位不变
- 减:减数符号位取反,变成加法
- 乘:符号位异或,数值绝对值相乘再与前者相乘。累加n次,位移n次
- 除:数据位被除数减除数,余数为正商1两者左移后减除数,余数为负商0两者左移后加除数。符号由符号位异或取得。加减n+1或n+2次,移位n次
-
补码定点数的运算
-
加:补码直接相加
-
减:被减数与减数的机器负数相加
-
乘:Booth算法,根据乘数末位以及附加位确定操作,初始附加位为0。累加n+1次,移位n次
-
除:符号位参加运算,被除数与除数同号就相减反正相加;余数与除数同号商1,左移一位减除数,余数与除数异号商0,余数左移一位加上除数。商末位一般置1。加减n+1次,移位n次
-
-
浮点数的运算
- 加减:采用补码,分为以下几步
- 对阶:小阶向大阶对齐
- 尾数求和:按照定点数方式计算
- 规格化:左规或右规直至尾数最高位与符号位不同
- 舍入:“0”舍“1”入法、恒置“1” 法。用于对阶和右规
- 溢出判断:判断的是规格化之后的码阶
- 乘除不考!
- 4、5步顺序不影响
- 加减:采用补码,分为以下几步
-
5.IEEE 754
- 对于短浮点数和长浮点数,尾数值的最高位“1”隐藏
- 规格化的段浮点数的真值** ( − 1 ) s × 1. M × 2 E − 127 (-1)^stimes1.Mtimes2^{E-127} (−1)s×1.M×2E−127**
- 四种舍入方式
- 就近舍入:舍入为最近可以表示的数字
- 正向舍入:朝 + ∞ +infty +∞方向舍入,取右边的数
- 负向舍入:朝 − ∞ -infty −∞方向舍入,取左边的数
- 截去:朝0方向舍入,取绝对值小的那个数
6.浮点数运算结果的几种情况:
- 阶码上溢出:一个正指数超过了最大允许值,浮点数发生上溢出;若结果是负数,则发生负上溢出。一般为软件故障,需要引入溢出故障处理程序来处理
- 阶码下溢出:一个负指数比最小允许值还要小,浮点数发生下溢出。一般会把下溢出的值置0。不发生溢出故障
- 尾数溢出:当尾数最高有效位有进位时,发生尾数溢出。此时进行“右规”操作:尾数右移一位,阶码加1,直到尾数不溢出。
- 非规格化尾数:数值部分高位不是有效值时,尾数为非规格化形式,规范化。
二、理解的思想
- 基数r越大,可表示的浮点数范围越大,表示的个数也越多。但精度会下降
- 现代计算机都采用补码进行加减法,也就是都能用加法器实现
- 乘法运算可以通过加法和位移来实现。编译器可以将乘法运算转换为一个循环代码段,在循环代码段中通过比较、加法和位移实现
- 尾数为补码表示的浮点数,看符号位是否和尾数最高位相反判断是否已规格化
- ALU基本功能包括加减乘除四则运算,与或非、异或逻辑运算,以及移位、求补等操作
- 提高并行加法器速度的关键是加快进位产生速度和传递的速度
- 并行加法器中进位表达式: C i = G i + P i C i − 1 C_i=G_i+P_iC_{i-1} Ci=Gi+PiCi−1( G i G_i Gi是进位产生函数, G i = A i B i G_i=A_iB_i Gi=AiBi ; P i P_i Pi是进位传递函数, P i = A i ⨁ B i P_i=A_i bigoplus B_i Pi=Ai⨁Bi)
- 字长相同时,浮点数取字长的一部分作为阶码,表示范围大于定点数,而也导致尾数部分的有效位减少;定点数字长的全部位都用来表示数值本身,精度比同字长的浮点数更大
- n位加法器实现的是模 2 n 2^n 2n无符号整数加法的运算,可以实现n为的无符号整数与有符号整数的加减
- float型变量在计算机中都被表示成IEEE 754 单精度格式
三、易错点
-
原码、反码、补码、移码中‘零’的表示方式分别为2/2/1/1
-
把符号“数字化”的数叫机器数,带+ 、-符号的数叫真值
-
[y]补 求[-y]补 采用’连同符号位在内,每位取反,末位加1‘
-
算术位移和逻辑位移:后者有符号位移
-
char -> int -> long -> double 与 float -> double 这两组类型转换没有损失
-
int -> float 不会溢出,但可能有数据舍入;float -> int 可能溢出,也可能有舍入
-
浮点数规格化尾数的表示范围(r=2)
- 各编码方式的数值范围
-
定点运算中溢出的判断:
- 一位符号位判断进位溢出:符号位的进位与最高数位的进位不同则溢出
- 一位符号位判断溢出:如果补码加减法操作的两个数符号相同,结果又与原操作数的符号不同,即为溢出
- 双符号位判断溢出:运算结果的两个符号位相同,表示未溢出;运算结果符号位不同,溢出,且最高符号位代表真正的符号
-
运算时寄存器标志位CF为1表示加法器最高位有进位,但对运算结果不说明什么
-
若溢出标志OF为1,表示产生了溢出,此时符号标志位SF表示错误的结果
四、冷知识
- 一般大型计算机采用浮点数,或同时采用定、浮点数;小型、微型、专用机等采用定点数
- 阵列乘法器实现乘法指令可以在一个时钟周期内完成
五、经典题目
(问答方式)
(原始的一定要掌握的进位函数)
(浮点数加减的标准过程-无溢出)
(IEEE 754 计算)
(int uint float IEEE )
最后
以上就是隐形柠檬为你收集整理的考研408-计算机组成原理-数据的表示和运算的全部内容,希望文章能够帮你解决考研408-计算机组成原理-数据的表示和运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复