第二章数据表示与令系统.ppt

  1. 1、本文档共165页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章数据表示与令系统

1 2.1 数据表示 – 数据表示是数据结构的一个子集,数据结构通过 一定的算法变成数据表示才能在系统中处理; – 数据表示是软、硬件界面的一部分;数据结构是软件和应用的一部分。 1.浮点数据表示的提出 早期的计算机系统只有定点数据表示 优点:硬件结构简单 缺点: 编程困难:先确定小数点位置,小数点对齐再运算 表示数的范围小:如16位字长表示的整数范围为: -32768~32767 数据存储单元的利用率很低(大量的前置0) 2.浮点数据表示的特点 计算机中的浮点数来源于数学中的实数,但两者有很多本质的区别: 实数:表示范围—无限,表示精度—连续。 浮点数:表示范围—有限,表示精度—不连续。 3.浮点数据的表示方式 浮点数的一般格式:对任意浮点数N,可表示为: (1)表数范围: 在尾数采用原码p位、纯小数,阶码q位采用移码的浮点数表示方式中,规格化浮点数N的表数范围如下: 【例1】某计算机的浮点数采用1位符号位、6位阶码和9位尾数,基数为16,求规格化时它能表示数值的个数。 浮点数的表数范围、表数精度和表数效率三个主要特征都与尾数基值rm有关。 浮点数加法中的对阶、规格化右移操作以及乘法中结果取单倍长度会把有效位移掉或截掉从而造成精度损失。 2.2 高级数据表示 自定义数据表示(Self-defining) 带标志符的数据表示 数据描述符 向量数据表示 堆栈数据表示 2.2.1 自定义数据表示 引入思想: 减小高级语言和机器语言的语义差距,减轻编译软件的工作量(减少指令种类) 分类 带标志符数据表示 数据描述符 1.带标志符数据表示 定义:用以定义某个数据的数据类型和数值的数据表示。格式如下: 优点: 简化指令系统和程序设计 简化了系统程序和编译程序的设计 便于一致性校验 能由硬件自动完成数据类型的变换 支持数据库系统的实现与数据类型无关的要求 为软件调试和应用软件开发提供支持 缺点: 硬件设计的复杂度增加(数据类型转换、一致性检验等) 降低指令的执行速度 必须用专门的指令完成标志符的初始化 引入可行性分析 存储空间是否减少? 例2.2 设处理机A的数据不带标志符,指令字长和数据字长都是32位,设处理机B的数据带3位标志符,使数据字长增至35位,但可使指令字长减少至30位。现有1个程序正在处理机A和B上运行的目标程序都有IC条指令,平均每条指令访问2个操作数,每个操作数重复访问R次。 (1)分别计算程序在处理机A和B上占用的存储空间大小。 (2)在什么条件下,程序在处理机B上占用的存储空间才小于在处理机A上占用的存储空间? 实现时间是否减少? 取出数据后转换,必须推迟到运行时间进行 专门的指令用于标志符初始化,增加了辅助开销 指令执行过程中,对每个标志符进行逐个解释,并判断数据是否相容,因此单条指令的执行速度降低,但宏观执行时间减少 宏观时间=设计时间+编译时间+调试时间 结论 运行时间增加,存储空间减少。 减小高级语言和机器语言的语义差距 通用机中不使用,专用机(支持动态数据类型如LISP和PROLOG)中使用 2.数据描述符 目的:描述复杂和多维的结构类型,进一步减少标志符所占的存贮空间。 优点: 实现阵列数据的索引比变址方法实现的好,而且能检查程序设计中阵列越界错误 为向量、数组数据结构的实现提供一定的支持,有利于简化编译中的代码生成 引入可行性分析:同带标志符的数据表示 描述符的工作过程如下图 3.两种自定义数据表示的区别 标志符是和每一个数据相连的,合存在一个存储单元中,描述单个数据的类型特征。 描述符是和数据分开存放的,专门用来描述所要访问的数据是整块数据还是单块数据,访问该数据块或数据元素所需要的地址以及其他特征信息等。 2.2.2 向量数据表示 向量表示 向量通常是指由标量的一组有序集合表示的量,类似于一维数组 标量通常只是一个整数或实数 数组 A=(a0,a1,a2,…,an-1)可看成向量 举例:计算 ci=ai+bi, I=10,11,…,1000 无向量数据表示(C语言): for(i=10; i=1000; i++) c[i]=a[i]+b[i]; 向量数据表示: C(10:1000)=A(10:1000)+B(10:1000) 举例:计算C(4:11)=A(4:11)+B(-4:3) 稀疏向量的压缩 采用隐蔽位向量法(压缩向量) 存取过程如图示: 描述符数据表示与向量数据表示 对向量数据结构提供的支持有何不同? 在描述符数据表示的机器中,只能提供描述符寄存器和简单的地址形成逻辑等硬件,虽能支持向量数据结构的运算,但运行速度较慢。 在向量数据表示的机器中,有丰富的向量运算指令,有大量的向量寄存器和并行、高速流水运算部件的支持,可以实现向量运算的高速执行。 2.2.3

文档评论(0)

ldj215323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档