计算机导论2知识课件.ppt
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 计 算 机 导 论 1.6 整数存储 溢出问题 即计算得出的数值超出了可以表示的数值范围 使用二进制补码记数法时,两个正值或负值分别相加都可能会出现这种情况; 无论哪种情况,检查答案的符号位就可以发现溢出的条件 如果两个正值相加的结果是负值的模式,或者两个负值相加的结果为正,那么就发生了溢出问题。 计 算 机 导 论 1.6 整数存储 溢出问题 使用更长的位模式,或者改变度量单位 有意识:小数值可以累加成大数值 计 算 机 导 论 1.6 整数存储 余码记数法 每一个数值都表示为相同长度的位模式 根据二进制记数呈现的顺序写下那个长度的所有位模式,二进制1作为其最高位的第一个模式大约就在数列的中间,用这个模式表示0,其前的模式就分别用于表示 1,? 2,? 3,…,其后的模式分别用于表示-1,-2,-3 计 算 机 导 论 1.6 整数存储 余码记数法 余码系统和二进制补码系统的区别就是符号位相反 计 算 机 导 论 1.6 整数存储 余码记数法 4位余码系统 称为余8记数法 用传统二进制系统的编码翻译每一个模式,然后将其与余码记数法表示的数值进行比较。 对于每一个模式,二进制解释值比余码记数法解释值都要大8 计 算 机 导 论 1.6 整数存储 余码记数法 3位余码系统 称为余4记数法 计 算 机 导 论 1.7 小数的存储 浮点记数法 存储小数点的位置 以只用一个字节存储的例子来解释浮点记数法 规定这个字节的高位端为符号位,剩余的7个位分为2组,或称其为域:指数域和尾数域 规定符号位右边的3个位为指数域,余下的4个位为尾数域 计 算 机 导 论 1.7 小数的存储 浮点记数法 计 算 机 导 论 1.7 小数的存储 浮点记数法 例子:位模 符号位是0,指数是110,尾数是1011 求解它的尾数,并在它的左边放置一个小数点,得到: .1011 求解指数域(110)的内容,并将其解释为一个用3位余码方法存储的整数: 2 计 算 机 导 论 1.7 小数的存储 浮点记数法 例子:位模 将上面所得结果的小数点向右移动2位。(负指数域就意味着向左移动小数点),得到: 10.11 转换为十进制:2.75 计 算 机 导 论 1.7 小数的存储 浮点记数法 例子:位模 求尾数: .1100 指数域011,将小数点向左移动一位:.01100 表示3/8 计 算 机 导 论 1.7 小数的存储 浮点记数法 用浮点记数法存储数值 例子:1.125 首先要将其用二进制记数法表示,得到:1.001 从左到右将其位模式复制到尾数域,并从二进制表示的最左边的1开始:_ _ _ _1001 计 算 机 导 论 1.7 小数的存储 浮点记数法 用浮点记数法存储数值 例子:1.125 填充指数域:假设尾数域的左边有一个小数点,然后规定位的数量以及小数点移动的方向,以此得到原始的二进制数字: .1001中的小数点要向右移动一位才能得到1.001,指数因此为正,所以我们将101(在余4记数法中表示为正1)置于指数域 计 算 机 导 论 1.7 小数的存储 浮点记数法 用浮点记数法存储数值 例子:1.125 数值是非负的,用0填充符号位 计 算 机 导 论 1.7 小数的存储 浮点记数法 用浮点记数法存储数值 例子:0.375 使用二进制记数法表示为.011,尾数为: _ _ _ _ 1100 而不是: _ _ _ _ 0110 规范化形式:从二进制表示最左边的1开始填充尾数域 非0数值:以1开始的尾数;0:特例,全部为0的位模式 计 算 机 导 论 1.7 小数的存储 截断误差 另外1/3 计 算 机 导 论 1.7 小数的存储 截断误差 2.5+0.125+0.125 若先计算2.5+0.125:得到2.625,不能被精确的存储,最后被存储为:2.5; 在把这个结果加上0.125,还是得倒2.5。 发生两次截断误差:一个大数字加上一个小数字,小数字可能被截断。 计 算 机 导 论 1.7 小数的存储 截断误差 2.5+0.125+0.125 若先计算0.125+0.125,得倒0.25,