数据信息的表示方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据信息的表示方法
数据信息的表示方法
数值数据表示方法
数值数据是指该数据有确定的数值。
非数值数据是指文字、符号等。
o真值与机器数
对二进制数来说,真值与机器数的区别主要在符号的表示方法上。
数值前的正号用“+”号表示、负号用“-”号表示,这种形式的数称为真值。
数值前的正号用“0”表示,负号用“1”表示,这种形式的数称为机器数。
例如:
真值+0.1011 -0.1011
机器数(原码) 0.1011 1.1011
o数的机器码表示
在计算机中根据运算方式的需要,机器数的表示方法往往会不相同。
通常有原码、补码、反码和移码(增码)四种表示法。
正数原码=反码=补码。
负数原码符号位不变,数值位各位取反即得反码;反码末位加1即得补码。
不论是正数还是负数,其补码符号位取反,数值位不变即为该数的移码。
机器码公式见表2.1所示。
表2.1 机器码公式表
从中可以看出:
o正数的3 种表示法有相同的形式。
o负数的原码比较直观。
符号位为“1”,其数值部分与真值相同。
o负数的补码中,符号位为“1”,数值部分为原码的数值部分求反后末位加1。
o负数的反码中,符号位为“1”,数值部分为原码的数值部分各位求反的值。
补码与反码之间的关系为
[x]补=[x]反+2-n
补码与移码之间的关系为
将补码符号位求反即得该数的移码。
带符号二进制数的真值、原码、反码和补码之间的相互转换如图2.1所示。
o定点数与浮点数
(1)定点数
小数点位置固定不变的数即为定点数,通常表示成定点小数或定点整数。
小数点位置确定后,在运算中不再考虑小数点问题,因而小数点不占用存储空间。
定点数表示简单。
但是数的取值范围小、精度低。
(2)浮点数
小数点的位置不固定,可以浮动变化的数即为浮点数。
浮点数一般表示形式为
阶码E和尾数M均为有符号数。
阶码为整数,指明小数点的位置,表示数据的取值范围。
尾数通常表示成纯小数,它指明数据中有效数字的位数,表示数据的精度,尾数的符号位表示数的正负。
浮点数表示复杂,但是数的取值范围大、精度高。
为了增加有效数字的位数,进一步提高数据的精度,浮点数必须进行规格化。
浮点数参
与运算以及运算结果也应该是规格化的。
所谓规格化就是规定尾数小数点后第一位,即尾数值部分的最高有效位必须是有效数字。
规格化后的尾数M满足下列表示形式:
o十进制数的二进制编码(BCD码)
常用的BCD码有8421码、2421码、余三码和格雷码。
四种编码与十进制数的对应关系如表2.2所示。
表2.2 常用编码形式与十进制数的对应关系
上述编码的特点可归纳如下
(1)BCD码都是用四位二进制代码表示一位十进制数字,每种编码均有六种组合不允许出现。
8421码不允许出现1010~1111六种组合。
2421码不允许出现0101~1010六种组合。
余三码不允许出现0000~0010,1101~1111六种组合。
格雷码不允许出现0101,0111,1001,1011,1101,1111六种组合。
(2)BCD码与十进制数之间的转换是以四位对应一位,直接进行变换。
一个n位十进制数对应的BCD码一定是4n位。
(3)2421码和余三码均为“对9的自补代码”。
应该强调的是,BCD码不是二进制数,而是用二进制编码的十进制数。
非数值数据的表示法
o字符编码
ASCII码是国际通用的字符编码标准,是一种常用的字符代码。
在学习输入输出设备时要用到。
不一定要记住,但要学会查表。
o汉字表示法
汉字用数字和符号的组合来表示称为汉字编码。
一个汉字的编码通常用内码、字模码、外码来描述,内码(也称机内码)是用于汉字
的存储、交换等操作的计算机内部代码,一个汉字内码通常用两个字节表示,且这两个字节的最高位均为1 ,以区别英文的ASCII 码。
字模码是汉字的输出编码,字库中存放的就是字模码。
外码(输入码)是用来输入汉字的编码,常用的输入方法有键盘输入法、手写输入法、语音输入法等。
内码与汉字字符是一一对应的。
内码与外码是一对多的关系,表明一个汉字的输入方法有多种。
内码与字模码是一对多的关系,表明一个汉字的输出形式有多种。
数据信息的校验
为了提高数据在传输过程中的可靠性,常采用以下校验技术。
o奇偶校验
奇校验规则:待校验数据中1的个数为奇数时,其校验位为0,否则为1。
偶校验规则:待校验数据中1的个数为偶数时,其校验位为0,否则为1。
一般采用“异或”电路得到校验位。
这种方式只能发现错误,不能纠正错误。
o循环冗余校验码
循环冗余校验码是一种基于模2运算建立编码规律的校验码。
它可以通过模2运算来建立有效信息和校验位之间的约定关系,即要求K=N+R 位的某数能被某一约定的数除尽,其中N是待编码的有效信息,R是校验位。
当从目标部件取得校验码时,仍用约定的数去除,若余数为0,则表明该校验码正确;若余数不为0,则表明有错,再进一步由余数值确定哪一位出错,从而加以纠正。
由于它的功能较强,因此其逻辑线路也比较复杂。
定点运算方法
定点数的运算可以用原码、反码、补码、BCD码等各种码制进行。
由于在加、减运算中补码运算规则简单易于实现,因此在目前的计算机系统中普遍采用补码形式存储、传送、运算。
定点补码加、减法运算
这里采用变形补码运算,最左边一位加法器∑0是为判断溢出而设置的,V端是溢出指示端。
寄存器C寄存第一个符号位产生的进位,也就是变形补码的模。
以变形补码运算时,它自动丢掉。
定点乘法运算
定点乘法运算包括原码一位乘法,原码二位乘法,补码一位乘法,补码二位乘法等几种运算方法。
1. 原码一位乘法
与加、减法不同,乘法采用原码较为简单,其乘积的符号为两数符号按位加之和。
乘积为被乘数与乘数的绝对值的积。
原码一位乘法运算规则
注意:第④点很容易被忽视,从而得出错误结果。
结果的正确与否,通过将普通手算法算出结果与该结果进行比较来判断。
2. 补码一位乘法
因机器中的数均以补码传送、存储,若进行原码乘法,还需将补码换成原码,增加了麻烦与处理时间,故现在计算机中又多直接采用补码乘法。
运算规则如下:
3. 原码二位乘法
为了提高乘法的执行速度,可以考虑每次对乘数的两位进行判断
以确定相应的操作,这就是两位乘法。
运算规则:
① 符号位不参加运算,最后的符号。
② 部分积与被乘数均采用三位符号,乘数末位增加一位C,其初值为0。
③ 按表2.3所示的操作。
④ 若尾数n为偶数,则乘数用双符号,最后一步不移位;
若尾数n为奇数,则乘数用单符号,最后一步移一位。
4. 补码二位乘法
补码两位乘法的算法是在补码一位乘法的算法基础上拓展来,目的是为了减少运算步骤,提高运算速度。
定点除法运算
除法运算通常是将n位除转换成若干次“加、减移位”循环,然后通过硬件或软件来实现。
原码一位除法
原码一位除法介绍了两种算法:恢复余数法和加减交替法。
这两种算法的共同点是
运算过程中的加、减操作都是采用双符号位补码运算。
数值部分的运算规则及特点如下表所示:
加减交替法的硬件逻辑框图如图2.5所示。
图2.5 原码一位加减交替除法逻辑框图
补码一位除法
补码一位除法运算规则由比较上商规则、商的校正规则和余数校正规则组成:
(1)比较上商规则:
① 符号位参加运算,除数与被除数均用双符号补码表示。
② 若被除数与除数同号,用被除数减去除数得余数;若被除数与除数异号,用被除数加上除数得余数。
③ 若余数与除数同号,商上1,余数和商左移一位,将余数减去除数得新余数;若余数与除数异号,商上0,余数和商左移一位,将余数加上除数得新余数。
④重复规则(n+1)次,最后一步不移位,除法完成。
(2)商的校正规则:
① 若除尽(即运算过程中任一步余数为0),则除数为正,商不必校正;除数为负,商
加2-n进行修正。
② 若除不尽,则商为正时,不必校正;商为负,则商需要加2-n 进行修正。
3)余数校正规则:
① 若商为正,则余数与被除数异号时,将余数加上除数得正确的余数。
② 若商为负,则余数与被除数异号时,余数需要减去除数进行校正。
余数之所以需要校正,是因为在补码不恢复余数除法运算过程中先比较后上商的缘故。
可见,如果要保存余数必须根据具体情况对余数作相应处理,否则余数不一定正确。
定点运算器的组成与结构
加法器及其进位系统
串行加法器由一位全加器实现两个n位的数相加,其运算速度很低。
并行加法器中,参加运算的两个数各位同时并行输入,经相同位数的加法器运算后输出结果,但结果中的各位数并不是同时得出的。
其原因是存在进位延迟问题。
因此,并行加法器中最值得研究的是进
位问题。
串行进位加法器中,参加运算的两个数x和y从最低位相加,以后各位都有进位,而且高位的运算都要在低位的进位形成之后才能进行。
由于存在这种依赖关系,其运算速度受到很大影响。
这是串行进位加法器的主要缺点。
为了提高加法器的运算速度,可从各位进位产生的逻辑表达式中获得启示,从而产生了并行进位加法器(或称先行进位加法器)。
在先行进位加法器中,将一个字分成几个小组,组内由逻辑线路实现并行进位,而组与组之间可以串行,或者再增加有关逻辑线路实现组间并行进位。
这样就大大缩短因进位而产生的延时,从而提高了运算速度。
算术逻辑单元(ALU)
ALU是运算器的核心部件,具有多种算术运算和逻辑运算的功能.而且具有先行进位逻辑电路(如SN74182),因而能实现高速运算,其逻辑结构原理如图2.6所示。
函数发生
器根据功能选择控制参数的不同状态组合,对输入数据Ai,Bi进行不同
的逻辑组合,产生不同的组合函数Xi,Yi,然后进行加法运算。
这样就实现了ALU的多种数据处理功能。
图2.6 ALU原理框图
定点运算器的基本结构
定点运算器的基本结构见图2.7。
其主要部件是ALU、通用寄存器组、输入选择电路、输出控制电路和总线,总线可以理解为传送数据
信息的一组传输线,数据按箭头所指的方向传送。
通用寄存器组的作用是暂存参加运算的数据、运算的中间结果或最后结果;锁存器的作用是对若干个数据的输入进行选择或控制;输出控制电路对加法器的输出进行控制;ALU 是运算器的核心,由它实现算术逻辑运算。
浮点运算方法和浮点运算器
浮点加法和减法
参与运算的浮点数首先要进行规格化。
若阶码和尾数均用补码表示,则采用双符号位进行运算可方便地进行规格化和溢出检测。
规格化浮点运算一般需要进行对阶、求和、规格化、舍入、判断溢出等工作。
(1)对阶
对阶的目的是使两操作数的小数点对齐,因而对阶后两数的阶码相等。
对阶的原则是小阶向大阶看齐。
(2)求和
对阶完成后,执行尾数相加减操作。
尾数相加减的方法与定点数的相同。
(3)结果规格化
结果规格化就是使运算结果成为规格化数。
为了运算处理方便,可让尾数的符号位扩展为两位,当运算结果的尾数部分不是
11.0××…×或00.1××…×的形式时,就要进行规格化处理。
规格化处理方法:
当运算结果的尾数符号位为01或10时,进行右规操作。
右规的方法是尾数连同符号位右移一位,和的阶码加1,右规处理后就可得到00.1××…×或11.0××…×的形式。
当运算结果的符号位和最高有效位为11.1或00.0时,进行左规操作。
左规的方法是尾数连同符号位一起左移一位,和的阶码减1,直到尾数部分出现11.0或00.1的形式为止。
(4)舍入
在对阶时或右规时,尾数的最低几位可能被移出丢掉,产生误差。
因此需舍入处理。
舍入处理方法:
恒舍:移出位一律丢掉,保留的尾数部分不作任何改变。
一般不用于补码。
恒置1:移出位一律丢掉,保留的尾数最末位置成1。
0舍1入:若最后移掉的位为0。
则舍去;若为1,则保留的尾数末位加1,如加1后尾数溢出,则须进行一次右规。
(5)溢出判断
当阶码的符号位出现01或10时,表示溢出。
浮点乘法运算
浮点乘法运算也可以分为如下三个步骤。
o阶码相加
两个数的阶码相加可在加法器中完成。
阶码和尾数两个部分并行操作时,可另设一个加法器专门实现对阶码的求和;串行操作时,可用同一加法器分时完成阶码求和、尾数求积的运算,并且先完成阶码求和运算。
阶码相加后有可能产生溢出,若发生溢出,则相应部件将给出溢出信号,指示计算机作溢出处理。
o尾数相乘
两个运算数的尾数部分相乘就可得到积的尾数。
尾数相乘可按定点乘法运算的方法进行。
o结果规格化
当运算结果需要规格化时,就应进行规格化操作。
规格化及舍入方法与浮点加、减法处理的方法相同。
浮点除法运算
浮点除法运算也可以分如下三步进行。
o检查被除数的尾数
检查被除数的尾数是否小于除数的尾数(从绝对值考虑)。
如果被除数的尾数大于除数的尾数,则将被除数的尾数右移一位并相应地调整阶码。
由于操作数在运算前是规格化的数,所以,最多只作一次调整。
这步操作可防止商的尾数出现混乱。
o阶码求差
由于商的阶码等于被除数的阶码减去除数阶码,所以,要进行阶码求差运算。
阶码求差可以很简单地在阶码加法器中实现。
o尾数相除
商的尾数由被除数的尾数除以除数尾数获得。
由于操作数在运算前已规格化并且调整了尾数,所以尾数相除的结果是规格化定点小数。
两个尾数相除与定点除法相类似,这里不再讨论。
请读者牢牢记住加、减、乘、除四则运算的运算规则,多做练习,还要特别细心,因为若运算中某一位出错,则最后结果会面目全非。
浮点运算器
浮点运算可用两个松散连接的定点运算部件来实现,这两个定点运算部件就是图2.8中所示的阶码部件和尾数部件。
图2.8 浮点运算器的一般结构图
尾数部件实质上就是一个通用的定点运算器,要求该运算器能实
现加、减、乘、除4种基本算术运算,其中,3个单字长寄存器:AC(累加器)、MQ(乘商寄存器)、DR(数据寄存器)用来存放操作数。
AC 和MQ 连起来还可组成左右移位的双字长寄存器AC-MQ,并行加法器用来完成数据的加工处理,其数据输入来自AC和DR,结果回送到AC。
MQ寄存器在做乘法时存放乘数,做除法时存放商数,所以称为乘商寄存器。
DR用来存放被乘数或除数,而结果(乘积或商与余数)则存放在AC-MQ中。
重点、难点与考点
重点:
o计算机中的数据表示,熟悉包括定点数、浮点数、字符、十进制数的表示方法;
o原码、补码、反码、移码等码制之间的关系以及各码制之间真值数的转换;
o补码的加减运算,定点原码一位乘、除运算,定点补码一位乘、除运算及其逻辑结构;
o变形补码、运算方法(尤其是补码)的理解,溢出、进位等问题的出现和解决方法;
o定点数的变形补码加减运算;
o原、补码乘法和除法运算;
o浮点运算方法和浮点数的规格化及其逻辑结构;
o运算器的基本结构和设计方法,了解已知芯片功能。
难点:
o各码制之间数值转换;
o对规格化数的理解;
o定点一位乘法、除法的运算过程,浮点数的规格化问题,加法器电路的认识,进位链的产生及处理方法。
o乘法运算、除法运算,浮点数的规格化。
o在充分理解运算方法的基础上设计逻辑框图、电路联接。
考点:
本章是计算机组成原理的重点章节之一,常见题型有填空题、选
择题、间答题、计算题、设计题,一般计算题占的比例较大,所以计算步骤需熟练掌握。
o填空题考点比较集中,一是数在各种进制下的表示方法,同一真值在原码、补码、反码、移码之间的互相转换,二是二进制原码、补码、反码的加减运算,
补码运算的溢出判断,变形补码,三是原码一位乘法,补码一位乘法,运算结
果对标志位的影响,四是简单运算的电路实现方式,加法器的类型、工作原理。
o对于运算方法,从基本概念的角度出发,以选择题形式出现的机会不多,一般都是计算为主,应该掌握的还是整型数、浮点数的运算规则和有关常识。
o简答题一般是考查给定了一定格式的数的表示范围,运算过程的掌握和运算器的内容,主要是对原码和补码的定点加减运算、定点一位乘法运算、定点一位
除法运算(主要是Booth方法)的描述和原理、性质的理解,运算溢出的判断,串行加法器,并行加法器,进位的产生,运算的实现。
o计算题常考各种形式的二进制数的运算,通常有:定点数的原码加减运算、补码加减运算(包括变形补码、溢出判断),定点原码一位(或二位)乘法、补
码一位(或两位)乘法,Booth乘法计算,定点原码除法运算,补码除法运算,对浮点数的规格化运算等。
对于设计题,一般包括了如下几个方面:对运算的溢出进行判断并设计出相应实现此功能的电路,定点乘法的实现逻辑图,全加器的电路理解、逻辑框图设计,利用已知集成电路芯片组合实现特定运算功能的ALU或全加器。
典型例题精选
例2.1 某机器字长16位,采用两位比较法进行补码乘法运算,此时并行加法器应该
是位加法器,应该进行次相加移位操作。
分析:
解:
正确答案为:17,16.
例2.2 多项选择:在下面每小题所列出的若干答案中,选取所有的正确答案(可能没有,也可以有一个或多个)。
补码加法规则如下:
o所有的操作数都用补码表示,结果也用补码表示。
o若两数同号做加法,异号则做减法。
o符号位和操作数一样参与运算。
o结果的符号为1,表示溢出。
分析:
补码加(减)法运算规则可归纳如下:参与运算的操作数用补码表示;符号位采用两位,即用变形补码表示;符号位作为数的一部分一起参与运算;运算结果以补码表示,若两符号位相同,结果正常,若符号位为01,表示正溢出,若符号位为10,表示负溢出。
解:正确答案为:A,C
例2.3 单选:某浮点机,采用规格化浮点数表示,阶码用移码表示(最高位代表符号位),尾数用原码表示。
下列哪个数的表示不是规格化浮点数。
A. 阶码:1111111 尾数:1.1000 (00)
B. 阶码:0011111 尾数:1.0111 (01)
C. 阶码:1000001 尾数:0.1111 (01)
D. 阶码:0111111 尾数:0.1000 (10)
分析:
因为规格化的浮点数,尾数有三种形式:
00.1xx……x(原码、补码、反码都是正数的形式)
11.0xx……x(补码、反码都是负数的形式)
11.1xx……x(原码是负数的形式)
选择项B不符合规格化的形式。
解:
正确答案是:B。
例2.4 设32位字长的浮点数,其中阶符1位,阶码7位,数符1位,尾23位。
分别写出机器数采用原码和补码表示时,所对应的最接近0的十进制负数。
分析:
计算机中的数据表示是二进制形式,本题中使用的32位浮点数据表示,阶码共8位,尾数共24位。
求最接近0的十进制负数的浮点表示就是数据表示中最大的负数,即绝对值最小的负数。
此时,该数的阶码为负,且绝对值最大;该数的尾数为负,且绝对值最小。
注意尾数不能为0。
例2.6 某机字长32位,浮点表示时,指数部分(即阶码)占8位
(含一位符号位),尾数部分占24位(含一位符号位),问o带符号定点小数的最大表示范围是多少?
o带符号定点整数的最大表示范围是多少?
o浮点表示时,最大正数是多少?
o浮点表示时,最大负数是多少?
o浮点表示时,最小的规格化正数是多少?
分析:
题目的关键是搞懂阶码是定点整数的移码表示,而尾数是定点小数的补码表示,其中的补码和移码的表示法一定要非常清楚。
阶码和
补码在形式上的唯一区别就是在表示同一个数时符号刚好相反。
解:
最大正数阶码:11111111(最左符号位,要最大当然阶码要大),尾数当然也要最大,为0111 11111 11111 11111。
绝对值最小的负数即是最大的负数,所以要阶码最达到负数的最小,绝对值的最大(即远离数轴原点的最左端),为00000000,而尾数应该达到负数的最大(即最靠近数轴原点的左端),为1011 11111 11111 11111(这里注意其中
的0是因为题目规定要用规格化数表示,这点很重要,否则就是1111 11111 11111 11111)。