1、第一章 系统给概论 习 题 一1.l 解释下列名词摩尔定律:对集成电路上 可 容 纳 的 晶 体 管 数 目 、 性 能 和 价 格 等 发 展 趋 势 的 预 测 ,其主要内容是:成集电路上 可 容 纳 的 晶 体 管 数 量 每 18 个月翻 一 番 ,性能将提高一倍,而其价格将降低一半。主存: 计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取。 控制器:计算机的指挥中心,它使计算机各部件自动协调地工作。 时钟周期:时钟周期是时钟频率的倒数,也称为节拍周期或 T 周期,是处理操作最基本的时间单位。 多核处理器:多核处理器是指在一枚处理器中集成两个或多个完整的计
2、算引擎(内核)。字长:运算器一次运算处理的二进制位数。 存储容量: 存储器中可存二进制信息的总量。CPI:指执行每条指令所需要的平均时钟周期数。 MIPS:用每秒钟执行完成的指令数量作为衡量计算机性能的一个指标,该指标以每秒钟完成的百万指令数作为单位。 CPU 时间:计算某个任务时 CPU 实际消耗的时间,也即 CPU 真正花费在某程序上的时间。 计算机系统的层次结构:计算机系统的层次结构由多级构成,一般分成 5 级,由低到高分别是:微程序设计级,机器语言级,操作系统级,汇编语言级,高级语言级。 基准测试程序:把应用程序中使用频度最高的那那些核心程序作为评价计算机性能的标准程序。软/硬件功能的
3、等价性:从逻辑功能的角度来看,硬件和软件在完成某项功能上是相同的,称为软/硬件功能是等价的,如浮点运算既可以由软件实现,也可以由专门的硬件实现。固件:是一种软件的固化,其目的是为了加快软件的执行速度。可靠性:可靠性是指系统或产品在规定的条件和规定的时间内,完成规定功能的能力。产品 可 靠 性 定 义 的 要 素 是 三 个 “规 定 ”: “规 定 条 件 ”、 “规 定 时 间 ”和 “规 定 功 能 ”。 MTTF:平均无故障时间, 指 系 统 自 使 用 以 来 到 第 一 次 出 故 障 的 时 间 间 隔 的 期 望 值 。 MTTR:系统的平均修复时间。 MTBF:平均故障间隔时间
4、,指相邻两次故障之间的平均工作时间。 可用性:指系统在任意时刻可使用的概率,可根据 MTTF、MTTR 和 MTBF 等指标计算处系统的可用性。 1.2什么是计算机系统的硬件和软件?为什么说计算机系统的硬件和软件在逻辑功能上是等价的?答:计算机硬件系统是指构成计算机系统的电子线路和电子元件等物理设备的总称。硬件是构成计算机的物质基础,是计算机系统的核心。计算机的硬件系统包含运算器、控制器、存储器、输入设备和输出设备等五大部件。计算机软件是计算机中全部程序的集合。软件按其功能分成应用软件和系统软件两大类。计算机硬件实现的往往是最基本的算术运算和逻辑运算功能,而其它功能大多是通过软件的扩充得以实现
5、的。有许多功能可以由硬件实现,也可以由软件实现,即从用户的角度来看它们在功能上是等价的,这一等价性被称为软/硬件逻辑功能的等价性。1.3 冯诺依曼型计算机的基本思想是什么?按此思想设计的计算机硬件系统应由哪些部件组成?各起什么作用?答:冯诺依曼型计算机的基本思想是存储程序和程序控制,其中的“存储程序”是指将解题的步骤编写成程序,然后把存储存放到计算机的内存中,而“程序控制”是指控制器读出存放在存储器中的程序并根据该程序控制全机协调工作以完成程序的功能。 根据冯诺依曼型计算机的基本思想,计算机的硬件应该由运算器、控制器、存储器、输入/输出设备和总线组成。各部件的作用:运算器:对数据进行运算的部件
6、。存储器:存放程序和数据。控制器:根据指令的功能控制构成计算机的各大功能部件协调工作,共同完成指令的功能。输入设备:将外部信息输送到主机内部的设备。输出设备:能将计算机内部的信息以不同并且相应的形式反馈给人们的设备。总线:连接两个或多个设备(部件)的公共信息通路。1.4 什么是计算机字长?它取决于什么?计算机字长统一了哪些部件的长度?答:计算机的字长一般指一次参与运算数据的基本长度,用二进制数位的长度来衡量。它取决于运算器一次运算处理的二进制位数。它是计算机的重要性能指标。常用的计算机字长有 8 位、16 位、32 位及 64 位。一般与计算机内部寄存器、加法器、数据总线的位数以及存储器字长等
7、长,因此,字长直接影响硬件的代价。1.5 计算机系统从功能上可划分为哪些层次?各层次在计算机系统中起什么作用?答:计算机系统分成五级层次结构,第 1 级为微程序设计级、第 2 级为机器语言级、第 3级为操作系统级、第 4 级为汇编语言级、第 5 级为高级语言级。各层次的作用:微程序级:为机器指令级提供机器指令的解释指行功能。机器指令级:是软件系统和硬件系统的界面,一条机器指令的功能由微程序机器级的一段微型程序的功能实现。操作系统级:调度计算机中的软件和硬件资源。汇编语言级:它将用户编写的接近人类语言的程序,翻译成能在机器上运行的目标程序。高级语言级:完全面向用户,是用户关心的目标,可执行各种用
8、途的程序。1.6 计算机内部有哪两股信息在流动?它们彼此有什么关系?答:计算机中有两股信息在流动:一股是控制信息,即操作命令,它分散流向各个部件;一股是数据信息,它受控制信息的控制,从一个部件流向另一个部件,在流动的过程被相应的部件加工处理。1.7 为什么说计算机系统的软件与硬件可以互相转化?答:计算机硬件实现的往往是最基本的算术运算和逻辑运算功能,而其它功能大多是通过软件的扩充得以实现的。有许多功能可以由硬件实现,也可以由软件实现,即从用户的角度来看它们在功能上是等价的,这一等价性被称为软/硬件逻辑功能的等价性。由于这样的等价性,所以可以说计算机系统的软件与硬件是可以互相转化的。1.8 什么
9、叫软件系统?它包含哪些内容?答:一台计算机中全部程序的集合,统称为这台计算机的软件系统。软件按其功能分成应用软件和系统软件两大类。应用软件是用户为解决某种应用问题而编制的一些程序。系统软件用于对计算机系统的管理、调度、监视和服务等功能,常将系统软件分为以下六类:操作系统,言处理程序,标准程序库,服务性程序,数据库管理系统和算机网络软件。1.9 说明高级语言、汇编语言和机器语言三者之间的差别和联系。答:机器语言是直接用二进制代码指令表达的计算机语言,是一种面向机器的编程语言,属于低级语言。汇编语言是用助记符号来表示计算机指令的语言,也是低级的语言。高级语言是一类接近于人类自然语言和数学语言的程序
10、设计语言的统称,分为面向过程的语言和面向对象的语言。它们都是计算机的编程语言,并且是计算机编程语言发展的三个阶段。三者各自的特点:使用机器语言编写的程序,占用内存少、执行效率高。缺点:编程工作量大,容易出错;依赖具体的计算机体系,因而程序的通用性、移植性都很差。使用汇编语言编写计算机程序,能够根据特定的应用对代码做最佳的优化,提高运行速度;能够最大限度地发挥硬件的功能。但是编写的代码非常难懂,不好维护;开发效率很低,时间长且单调。高级语言的优点是:编程相对简单、直观、易理解、不容易出错;编写的计算机程序通用性好,具有较好的移植性。1.10 什么是系统的可靠性?衡量系统可靠性的指标有哪些?如何提
11、高系统的可靠性?答:系统的可靠性是指系统在规定的条件和规定的时间内,完成规定功能的能力。衡量系统可靠性的指标有三个:平均无故障时间、平均故障间隔时间和可用性。提高系统可靠性的常用方法包括避错和容错。前者即避免错误的出现,从而提高系统的平均无故障时间;后者容许错误的出现,但采取有效的方法来防止其造成的不利影响。1.11 假定某计算机 1 和计算机 2 以不同的方式实现了相同的指令集,该指令集中共有A、B、C、D 四类指令,它们在程序中所占比例分别为 40%、20%、20%、20%,机器 1 和机器2 的时钟周期为 600MHZ 和 800MHZ,各类指令在两机器上的 CPI 如表 1.5 所示,
12、求两机器的MIPS 各为多少?表 1.5 两台计算机不同指令的 CPIA B C DCPI1 2 3 4 5CPI2 2 2 3 4解:CPI1= 2*0.4+ 0.2*(3+4+5)= 3.2 MIPS1= f/(CPI1106) = 600106/(3.2106)=187.5CPI2= 2*0.4+ 0.2*(2+3+4)= 2.6 MIPS2= f/(CPI1106) = 800106/(2.6106)=307.71.12 若某程序编译后生成的目标代码由 A、B、C、D 四类指令组成,它们在程序中所占比例分别为 40%、20%、15%、25%。已知 A、B、C、D 四类指令的 CPI 分
13、别为 1、2、2、2。现需要对程序进行编译优化,优化后的程序中 A 类指令条数减少了一半,而其它指令数量未发生变化。假设运行该程序的计算机 CPU 主频为 500MHZ。完成下列各题:1)优化前后程序的 CPI 各为多少?2)优化前后程序的 MIPS 各为多少?3)通过上面的计算结果你能得出什么结论?解:1)优化前:CPI= = 1 0.4 + 2 0.2 + 2 0.15 + 2 0.25ni iiICP1)(= 1.6优化后:A、B、C、D 四类指令在程序中所占比例分别为 1/4、1/4、3/16、5/16, CPI= = 1 1/4 + 2 1/4 + 2 3/16 + 2 5/16ni
14、 iiI1)(= 1.752)根据 公式 MIPS = 得6CPI 10时 钟 频 率优化前:MIPS = (50010 6)/(1.6106) = 312.5优化后:MIPS = (50010 6)/(1.75106) = 285.73)优化后,A 类指令条数减少,造成计算机的 CPI 增加,MIPS 减少。这样的优化虽然减少了 A 类指令条数,却降低了程序的执行速度。第二章 数据表示方法 习 题 二2.1 解释下列名词真值:正号和负号分别用“+”和“- ”表示,数据位保持二进制值不变的数据表示方法。数值数据:计算机所支持的一种数据类型,用于科学计算,常见的数值数据类型包括小数、整数、浮点数
15、数等。 非数值数据:计算机所支持的一种数据类型,一般用来表示符号或文字等没有数值值的数据。 机器数:数据在机器中的表示形式,是正负符号数码化后的二进制数据。 变形补码:用两个二进制位来表示数字的符号位,其余与补码相同。即“00”表示正,“11”表示负。 规格化:将非规格化的数处理成规格化数的过程。规格化数规定尾数用纯小数表示,且真值表示时小数点后第一位不为 0(以机器数表示时对小数点后第一位的规定与具体的机器数的形式有关) 。 机器零:计 算 机 保 存 数 字 的 位 有 限 , 所 能 表 示 最 小 的 数 也 有 范 围 , 其 中 有 一 个 范 围 之中 的 数 据 无 法 精 确
16、 表 示 , 当 实 际 的 数 据 处 在 这 个 无 法 精 确 表 示 的 数 据 范 围 时 计 算 机 就 将该 数 作 为 机 器 零 来 处 理 , 因 此 , 计 算 机 中 的 机 器 零 其 实 对 应 的 不 是 一 个 固 定 的 数 , 而 是一 个 数 据 表 示 范 围 。 BCD 码:用 4 位二进制数来表示 1 位十进制数中的 09 这 10 个数码,即二进制表示的十进制数。 汉字内码:计算机内部存储、处理加工和传输汉字时所用的由 0 和 1 符号组成的代码。码距:一 组 编 码 中 对 应 位 上 数 字 位 不 同 的 最 小 个 数 。 奇偶校验:通过检
17、测校验码中 1 的个数的奇/偶性是否改变来判断数据是否出错的一种数据校验方法。 海明校验:是一种基于多重奇校验且具有检测与纠正错误的校验方法。其基本原理是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。循环冗余校验:是数据通信领域中最常用的一种具有检测与纠正错误能力差错校验码,基利用生成多项式并基于模 2 运算建立编码规则。检错:检测被传送的信息中是否发生差错。 纠错:纠正信息在传送或存储过程中所发生的错误。2.2 回答下列问题1)为什么计算机中采用二进制?答:因为二进制具有运算简单和表示简单的优点,除此之外还有可靠
18、和容易实现等特点。具体来说,是因为:( 1) 技 术 实 现 简 单 , 计 算 机 是 由 逻 辑 电 路 组 成 , 逻 辑 电 话 通 常 只 有 两 个 状 态 , 开 关的 接 通 与 断 开 , 这 两 种 状 态 正 好 可 以 用 “1”和 “0”表 示 。 ( 2) 简 化 运 算 规 则 : 两 个 二 进 制 数 和 、 积 运 算 组 合 各 有 三 种 , 运 算 规 则 简 单 , 有 利于 简 化 计 算 机 内 部 结 构 , 提 高 运 算 速 度 。 ( 3) 适 合 逻 辑 运 算 : 逻 辑 代 数 是 逻 辑 运 算 的 理 论 依 据 , 二 进 制
19、 只 有 两 个 数 码 , 正 好与 逻 辑 代 数 中 的 “真 ”和 “假 ”相 吻 合 。 ( 4) 易 于 进 行 转 换 , 二 进 制 与 十 进 制 数 易 于 互 相 转 换 。2)为什么计算机中采用补码表示带符号的整数?答:采用补码运算具有如下两个特征:( 1) 因为使用补码可以将符号位和其他位统一处理,同时,减法也可以按加法来处理,即如果是补码表示的数,不管是加减法都直接用加法运算即可实现。( 2) 两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。这样的运算有两个好处:( a) 使符号位能与有效值部分一起参加运算,从而简化运算规则。从而可以简化运算器的
20、结构,提高运算速度;(减法运算可以用加法运算表示出来。 )( b) 加法运算比减法运算更易于实现。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。3)浮点数的表示范围和精确度分别由什么决定?字长一定时浮点数的表示范围与精确度之间有和关系?答:浮点数的表示范围由阶码的位数决定,精确度由尾数的位数决定。当机器字长一定时,分给阶码的位数越多,尾数占用的位数就越少,则数的表示范围越大。而尾数占用的位数减少,必然会减少数的有效数位,即影响数的精度。4)汉字输入码、机内码和字型码在汉字处理过程中各有何作用?答:汉字输入码、机内码和字型码,分别用于汉字的输入、汉字在计算机内的处理以及汉字的显示
21、和打印。具体来说,计算机要对汉字信息进行处理,首先要将汉字转换成计算机可以识别的二进制形式并输入到计算机,这是由汉字输入码完成的;汉字输入到计算机后,还需要转换成内码才能被计算机处理,显然,汉字内码也应该是二进制形式。如果需要显示和打印汉字,还要将汉字的内码转换成字形码。5)在机内码中如何区分两个 ASCII 码字符和一个汉字?答:将一个汉字看成是两个扩展 ASCII 码,使表示 GB2312 汉字的两个字节的最高位都为1,而每个 ASCII 码字符中每个字节的最高位为 0。这样就能区别一个机内码到底对应一个汉字还是两个西文字符。6)“8421 码就是二进制数” 。这种说法对吗?为什么?答:这
22、种说法是不对的。8421 码是一种最简单的有权码,它选取 4 位二进制数的前 10 个代码 00001001 分别对应表示十进制数的 10 个数码。若按权求和,和数就等于该代码所对应的十进制数。8421 码是一种编码方式,用于十进位制与二进制数之间的转换。而二进制数是用 0 和 1 两个数码来表示的数。二者是不同的概念,不能等同。7)如何识别浮点数的正负?浮点数能表示的数值范围和数值的精确度取决于什么?答:当采用一般浮点数格式表示浮点数时,阶码和尾数都各包含一位符号位。浮点数的正负由尾数的的符号位决定。当采用 IEEE754 格式时,通过数符就能判断出浮点数的正负。浮点数能表示的数值范围和数值
23、的精确度,分别取决于阶码的位数和尾数的位数。8)简述 CRC 的纠错原理。答:发送部件将某信息的 CRC 码传送至接收部件,接收部件收到 CRC 码后,仍用约定的生成多项式 G(x)去除,若余数为 0,表示传送正确;若余数不为 0,表示出错,再由余数的值来确定哪一位出错,从而加以纠正。具体的纠错原理如下:( 1) 不论错误出现在哪一位,均要通过将出错位循环左移到最左边的一位上时被纠正;( 2) 不为零余数的具有循环特性。即在余数后面补一个零除以生成多项目式,将得到下一个余数,继续在新余数基础上补零除以生成多项式,继续该操作,余数最后能循环到最开始的余数。( 3) CRC 就是利用不为零余数的循
24、环特性,在循环计算余数的同时,将收到的 CRC 编码同步移动,当余数循环到等于最左边位出错对应的余数时,表明已将出错的位移到 CRC码的最左边,对出错位进行纠错。( 4) 继续进行余数的循环计算,并同步移动 CRC 编码,当余数又回到最开始的值时,纠错后的 CRC 码又回到了最开始的位置。至此,完成 CRC 的纠错任务。2.3 写出下列各数的原码、反码和补码。0, 一 0, 0.10101, 一 0.10101, 0.11111, 一 0.11111, 0.10000, 0.10000解:x=0,则0 原 0.000 , 0 反 0.000, 0 补 0.000;x=-0,则0 原 1.000
25、,0 反 1.11l,0 补 0.000;x=0.10101,则x 原 0.10101,x 反 0.10101,x 补 0.10101;x=一 0.10101,则x 原 1.10101,x 反 1.01010,x 补 1.01011;x=0.11111,则x 原 0.11111,x 反 0.00000,x 补 0.00001;x=一 0.11111,则x 原 1.11111,x 反 1.00000,x 补 1.00001;x=0.10000,则x 原 1.10000,x 反 1.01111,x 补 1.10000;x=0.10000,则x 原 0.10000,x 反 0.10000,x 补 0
26、.10000。2.4 已知数的补码表示形式,求数的真值。x补 0.10010, x 补 1.10010, x 补 1.11111, x补 1.00000, x 补 0.10001, x 补 1.00001,解:x补 0.10010,则x 原 0.10010,x=0.10010;x补 1.10010,则x 原 1.01101,x=0.01101;x补 1.11111,则x 原 1.00000,x=0;x补 1.00000,则x 原 1.11111,x= 0.11111;x补 0.10001,则x 原 0.10001,x=0.10001 ;x补 1.00001,则x 原 1.11110,x= 0.
27、11110。2.5 已知 x0.10110,y0.01010,求:x/2补 , x/4补 , y/2补 , 2y补解: x 原 =0.10110=x反 =x补 ,所以x/2 补 =0.010110,x/4 补 =0.0010110;y原 =1.01010,y 反 =1.10101,y 补 =1.10110,所以y/2 补 =1.110110, 2y补 =1.0110。2.6 C 语言中允许无符号数和有符号整数之间的转换, 下面是一段 C 语言代码:Int x =-1;Unsigned u=2147483648;Printf (“x=%u=%dn”,x,x);Printf (“u=%u=%dn”
28、,u,u);给出在 32 位计算机中上述程序段的输出结果并分析原因.解 : x=4294967295=-1; u=2147483648=-2147483648原 因 : x 是 int 型 , 在 计 算 机 中 以 补 码 形 式 存 在 。 %u 以 无 符 号 输 出 , %d 输 出 真 值 ,所以 x=4294967295=-1。u=231 是 一 个 无 符 号 数 , 无 溢 出 , 由 于 首 位 为 1%u 符 号 输 出 第 一 位 为 非 符 号 位 , 所 以 是 2147483648%d 第 一 位 为 符 号 位 , 所 以 是 负 数 , 取 反 加 1 还 是
29、231 所 以 是 -2147483648。2.7 分析下列几种情况下所能表示的数据范围分别是多少1)16 位无符号数;2)16 位原码定点小数;3)16 位补码定点小数;4) 16 位补码定点整数;解:1)16 位无符号数:0 1111 1111 1111 1111,即 0 216-1=655352)16 位原码定点小数:1.111 1111 1111 1111 0.111 1111 1111 1111,即 -(1-2 -15) 1-2 -153)16 位补码定点小数:1.000 0000 0000 0000 0.111 1111 1111 1111,即 -1 1-2-154) 16 位补码
30、定点整数:1000 0000 0000 0000 0111 1111 1111 1111,即 -215 215-12.8 用补码表示 8 位二进制整数,最高位用一位表示符号(即形如 x0x1x2x3x4x5x6x7)时,模应为多少?解 : 因 为 8 位 二 进 制 数 补 码 的 表 示 范 围 为 : -128127 一 共 有 256 个 数 , 所 以 模 为256。2.9 用 IEEE754 32 位浮点数标准表示十进制数 a) b)3.1415927 c)640008解:a) 首先分别将整数和分数部分转换成二进制数:=-110.10156移动小数点,使其变成 1.M 的形式:-11
31、0.101=-1.10101*22于是得到:S=0, e = 2,E= 10+01111111 = 10000001,M = 1 0101最后得到 32 位浮点数的二进制存储格式为:1100 0000 1101 0100 0000 0000 0000 0000=( C0D40000) 16b) 首先分别将整数和分数部分转换成二进制数:3.1415927=11.00100100001111110110101移动小数点,使其变成 1.M 的形式11.00100100001111110110101=1.1001001000011111101101012于是得到:S=0, e = 1,E= 1+011
32、11111 =10000000,M = 1 0010010000111111011010最后得到 32 位浮点数的二进制存储格式为:0100 0000 0100 1001 0000 1111 1101 1010=( 40490FDA) 16c) 首先将 6400 转换成二进制数:64000=1100100000000移动小数点,使其变成 1.M 的形式1100100000000=1.100100000000212于是得到:S=0, e = 12,E= 1100+01111111 =10001011,M = 1001最后得到 32 位浮点数的二进制存储格式为:0100 0101 1100 100
33、0 0000 0000 0000 0000=(45C80000) 162.10 求与 IEEE754 32 位浮点数 43940000H 对应的十进制数。解 :43940000H=( 0100 0011 1001 0100 0000 0000 0000 0000) 2S=0, E=( 10000111) 2-127=8, M=1.00101所 以 表 示 数 为 100101000, 对 应 的 十 进 制 数 为 296。2.11 求 32 位 IEEE754 浮点数能表示的最大数和最小数。解:用 IEEE754 格式(E 的取值范围:1254,留出全 0 和全 1 分别表示 0 和无穷大)
34、31 30 23 22 0S E M(1) 最大数的二进制表示:0 11111110 11111111111111111111111 即 2 127(2-2-23)(2) 最小数的二进制表示:1 11111110 11111111111111111111111 即 - 2 127(2-2-23)2.12 设有两个正浮点数:N 12 mM1,N 22 nM2。(1)若 mn,是否有 N1N 2?(2)若 M1 和 M2 是规格化的数,上述结论是否正确?解:(1)不一定。例如,N 12 30.001,N 22 20.01,此时 mn,却有 N1N 2。再如,N 12 30.001,N 22 20.
35、1,此时 mn,却有 N1N2。(2)正确。因为浮点数规格化,要求尾数的最高位为非 0 数码,即当尾数的值不为零时,其绝对值应大于或等于(1/2) 10。那么 M1 和 M2 都必须是 0.1 的形式。这时,若 mn,则一定有 N1N 2。2.13 设二进制浮点数的阶码为 3 位,尾数是 7 位。用模 2 补码写出它们所能表示的最大正数、最小正数、最大负数和最小负数,并将它们转换成十进制数。解: 补码 真值最大正数: 011;0.111111, 2 3(1-2 -6)最小正数: 101;0.000001, 2 32-6最大负数: 101;1.111111, -2 32-6最小负数: 011;1
36、.000000, -2 3(1-2 -6)2.14 将下列十进制数表示成浮点规格化数,阶码 4 位,尾数 10 位,各含 1 位符号,阶码和尾数均用补码表示。(1)57/128 (2) 69/128解 : ( 1) 57/128=(0.0111001)2, 记 x=0.0111001, 则 x原 =x反 =x补 =0.0111001,规格化:x 补 =0.111001*2-1阶 码 的 原 码 为 : 1001, 因 此 补 码 为 : 1111尾 数 为 : 0111001000表示成浮点规格化数:1111 0 111001000( 2) -69/128=(-0.1000101)2, 记 x
37、=-0.1000101, 则 x原 =1.1000101,x 反 =1.0111010,x补 =1.0111011,无需规格化,阶 码 为 0000, 尾 数 为 1011101100表示成浮点规格化数:0 000 10111011002.15 设有效信息为 01011011,分别写出奇校验码和偶校验码。如果接收方收到的有效信息为 01011010,说明如何发现错误。解:奇偶校验位分别为:0 和 1,奇校验码:010110110偶校验码:010110111如果采用奇校验,则发送方发出的奇校验码 x=010110110(前 8 位是有效信息位,最后一位是校验位) ,如果接收方收到的 x=0101
38、10100 (只有 1 位出错,最后一个 0 是校验位), 接收方按奇校验方式根据 01011010 计算得到的验位 C1 ,与从信息中读到得校验码的取值不同,表明传送的信息发生了错误。如果采用偶校验,利用相似的方法可以发现错误。2.16 由 6 个字符的 7 位 ASCII 编码排列,再加上水平和垂直偶校验位构成如表 2.23 的行列结构(最后一列为水平奇偶校验位,最后一行为垂直奇偶校验位)表 2.23 ASCII 码交叉校验字符 7 位 ASCII 码 HP3 0 X1 X2 0 0 1 1 0Y1 1 0 0 1 0 0 X3 1+ X4 1 0 1 0 1 1 0Y2 0 1 X5 X
39、6 1 1 1 1D 1 0 0 X7 1 0 X8 0= 0 X9 1 1 1 X10 1 1VP 0 0 1 1 1 X11 1 X12则 X1 X2 X3 X4 处的比特分别为 _1110_; X5 X6 X7 X8 处的比特分别为 _1000_; X9 X10 X11 X12 处的比特分别为 _1011_; Y 1 和 Y 2 处的字符分别为 _I_ 和 _7_。解答思路:利用交叉奇/偶校验原理来确定各个 X 值,再查询 ASCII 码表获知 Y1 和 Y2 是什么字符。2.17 设 8 位有效信息为 01101ll0,试写出它的海明校验码。给出过程,说明分组检测方式,并给出指误字及其
40、逻辑表达式。如果接收方收到的有效信息变成 01101111,说明如何定位错误并纠正错误。解 : 被 检 验 位 有 8 位 , 设 检 验 位 有 r 位因 为 : 8+r=2r -1 r=4;设 四 位 分 别 为 P1, P2, P3, P4海 明 码 为 : P1P20P3110P41110P1: 3, 5, 7, 9, 11P2: 3, 6, 7, 10, 11P3: 5, 6, 7, 12P4: 9, 10, 11, 12所 以 P1=1, P2=1 P3=0 P4=1海 明 码 为 : 110011011110指 错 位 G1: 1, 3, 5, 7, 9, 11G2: 2, 3,
41、 6, 7, 10, 11G3: 4, 5, 6, 7, 12G4: 8, 9, 10, 11, 12G1=0, G2=0, G3=0, G4=0图 略 。2.18 设要采用 CRC 编码传送的数据信息 x=1001,当生成多项式为 G(x)1101 时,请写出它的循环校验码。若接收方收到的数据信息 x=1101,说明如何定位错误并纠正错误。解 : 作 模 二 除 法 : 1010)(3xGXM所 以 循 环 码 为 : 1001011。若 接 收 到 的 数 据 信 息 x=1101, ,所以是第 2 位出错,将第 2 位)(x的 1 改为 0 即可。第三章 运算方法和运算器 习 题 三3.
42、1 解释下列名词变形形补码:即用两个二进制位来表示数据的符号位,其余与补码相同。 溢出:运算结果超出数据类型所能表示数据范围的现象称为溢出。 阵列乘法:采用类似手工乘法运算的方法,用大量与门产生手工乘法中的各乘积项,同时将大量一位全加器按照手工乘法算式中需要进行加运算的各相关项的排列方式组成加法器阵列。 恢复余数除法:比较被除数(余数)与除数的大小是用减法实现的。对原码除法而言,由于操作数以绝对值的形式参与运算,因此,相减结果为正(余数的符号位为 0)说明够减,商上 1;相减结果为负(余数的符号位为 1)说明不够减,商上 0。由于除法通过减法实现,当商上 1 时,可将比较数据大小时的减法操作与
43、除法操作中的减法操作合并,即商上 1 后继续后面的除法操作。商上 0 时表明不够减,但因比较操作时已经实施了一次减法,因此,需要对执行比较操作后的结果加上除数,既将余数还原成比较操作前的数值,这种方法就称为恢复余数法。不恢复余数除法:又称加减交替法,是对恢复余数法的改进。不恢复余数法的特点是不够减时不再恢复余数,而根据余数的符号作相应处理就可继续往下运算,因此运算步数固定,控制简单,提高了运算速度。阵列除法:类似于阵列乘法器的思想,为了加快除法的执行速度,也可以采用阵列除法器来实现除法。为简化运算及阵列除法器的结构,对参加运算的数据进行适当的处理,使其以正数的形式参加运算。 行波进位:多位进位
44、之间存在高位进位的产生依赖低位进位的一种进位方式。并行进位:高、低进位之间不存在具有依存关系,而是同时计算的进位方式。算术移位:分为算术左移和算术右移。其中算数左移 n 位相当于乘上 2n,执行方法是把原来的数中每一位都向左移动 n 个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补 0,当符号位发生改变时表明发生了溢出。算术右移时,符号位保持不变,其余各位依次右移,最右边一位移出,将符号位拷贝到左边空出的位,一次移位相当于除 2。逻辑移位:逻辑左移 n 位的执行方法,是把原来的数中每一位都向左移动 n 个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补“0“。 逻辑右移 n
45、位的执行方法是把原来数中的每一位都向右移动 n 个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补 0。对阶:使阶码相等的过程,对阶的时一般采取小的阶码向大阶码看齐的方式。 规格化:就是使浮点数的运算结果中,将尾数从非规格化数变成规格化数的过程。根据尾数形式的不同,规格化可分为左移规格化和右移规格化。3.2 回答下列问题: 1)为什么采用并行进位能提高加法器的运算速度? 答:由于并行进位电路能很快产生各位的进位信号,使得加法器的速度大大提高。2)如何判断浮点数运算结果是否发生溢出? 答:由于溢出与数据的表示范围有关,而浮点数的阶码影响到其数据表示的范围,因此,浮点数的溢出是通过接码的是
46、否溢出为判断标志。对于采用双符号位的阶码而言,当双符号位不同时表示浮点数发生溢出,否则则未发生溢出。3)如何判断浮点数运算结果是否为规格化数?如果不是规格化数 ,如何进行规格化? 答:当尾数采用补码表示时,若运算结果不是 11.0或 00.1的形式时,结果就不是规格化数。则应进行相应的规格化处理:当尾数符号为 01 或 10 时,需要向右规格化,且只需将尾数右移一位,同时将结果的阶码值加 1。当尾数运算结果为 11.1或 00.0时需要左移规格化,而且左移次数不固定,与运算结果的形式有关。左规的方法是尾数连同符号位一起左移位、和的阶码减 1,直到尾数部分出现 11.0 或00.1 的形式为止。
47、4)为什么阵列除法器中能用 CAS 的进位/ 借位控制端作为上商的控制信号? 答:阵列除法器利用不恢复余数的除法,当商上 1 的时候,会产生进位,当商上 0 时,不产生进位,进位信号与上商信号是相同的,所以可以用 CAS 的进位/借位控制作为上商的控制信号。5)移位运算和乘法及除法运算有何关系?答:移位运算是乘除法中的基本运算。3.3 已知x和y,用变形补码计算xy,并判断结果是否溢出。 (1) x0.11010,y0.101110 (2) x0.11101,y0.10100 (3) x0.10111,y0.11000 解:(1)x+y 补 =01.100010,溢出。(2)x+y 补 =00
48、.01001,未溢出。(3)x+y 补 =10.10001,溢出。3.4 已知x和y,用变形补码计算xy,并判断结果是否溢出。 (1) x0.11011,y0.11101 (2) x0.10111,y0.11110 (3) x0.11111,y0.11001 解:(1)x-y 补 =11.11110,未溢出。(2)x-y 补 =11.11001,未溢出。(1)x-y 补 =11.11001,未溢出。3.5 设移码用 6 位表示(包含 2 位符号位),求x y 移(1)x = -6 , y = -3(2)x=7 , y =11(3)x=-3 , y =-12 解:(1)x 移 =001010,y移 = 001101 -y移 =110011 Y补 = 111101 -Y补 = 000011X移 + y移 =010111,X移 + Y补 = 001010+111101 =000111根据移码加法公式x + y 移 =X移 + Y补 = 000111根据移码加法公式及溢出判断规则,双符号位为 00,结果为负,未溢出。根据移码的减法公式:-y 移 =