逻辑数据表示字符数据表示_第1页
逻辑数据表示字符数据表示_第2页
逻辑数据表示字符数据表示_第3页
逻辑数据表示字符数据表示_第4页
逻辑数据表示字符数据表示_第5页
已阅读5页,还剩184页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章数据表示、运算和运算器部件一、数据编码与表示二、数据的算术运算(加减与1位乘除)三、定点运算器的功能与组成四、数据的算术运算(快速乘除法)五、浮点运算与浮点运算器六、检错纠错编码七、本章内容总结返回一、数据编码与表示

1.信息编码二要素2.基二码应用实例:数据表示逻辑数据表示字符数据表示ASCIIEBCDIC

字符串汉字检错纠错码

奇偶校验码海明校验码循环冗余校验码3.进位记数法与数制转换定点小数整数浮点数二至十进制数(BCD编码)和码权4.定点小数的原码、反码、补码表示与小结返回1.数字化编码二要素数值、文字、符号、语音、图形、图像等统称数据,在计算机内部,都必须用数字化编码的形式被存储、加工和传送。数字化编码二要素:

少量、简单的基本符号

一定的组合规则用以表示大量复杂多样的信息返回2.基二码(二进制码)只使用两个基本点符号:1

0符号个数最少,物理上容易实现,与二值逻辑的真

假两个值对应简单,用二进制码表示数值数据运算规则简单。返回基二码应用实例:数据表示逻辑型数据字符型数据ASCII码

EBCDIC码字符串汉字检错纠错码 奇偶校验 海明校验循环冗余校验数值型数据 定点小数整数浮点数二至十进制数(BCD码)

返回逻辑型数据逻辑型数据只有两个值:真和假,正好可以用二进制码的两个符号分别表示,例如

1

表示真则

0

表示假不必使用另外的编码规则。对逻辑型数据可以执行逻辑的与或非等基本逻辑运算。其规则如下:返回逻辑型数据基本运算规则

X

YX与YX或YX的非

0

0001

0

1011

1

0010

1

1110

返回字符型数据的表示

字符作为人—机联系的媒介,是最重要的数据类型之一,当前的西文字符集由128

个符号组成,通常用8位二进制编码,即用一个字节来表示每一个符号,当前通用的两个标准字符集是:ASCII码:即AmericanStandardCodefor

Information

InterchangeEBCDIC码:即ExtendedBinary

Coded

Decimal

InterchageCodeASCII码字符集具体编码如下表所示:

返回

b6b5b4000

001

010011100101110111b3b2b1b00000NULDLESP

0@P

,p0001SOHDC1

!

1AQaq0010STXDC2“

2BRbr0011ETXDC3

#

3CS

cs0100EOTDC4

$4DTdt0101ENQNAK

%5EUeu0110ACKSYN

&6FVfv0111BELETB

7GWgw

1000BSCAN(8

H

Xhx

1001HTEM

)9

I

Y

i

y

1010LFSUB*:

JZ

jz

1011VTESC+;

K[k{1100FFFS,<

L

\l|1101CRGS-=M

]m}1110SORS.>N^n~1111SIUS/?O_

oASCII字符编码集返回字符串的表示与存储字符串是指连续的一串字符,它们占据主存中连续的多个字节,每个字节存放一个字符,对一个主存字的多个字节,有按从低位到高位字节次序存放的,也有按从高位到低位字节次序存放的。表示字符串数据要给出串存放的主存起始地址和串的长度。例如:IFA>BTHENREAD(C)就可以有如下不同的存放方式:

IFAAFI>BTTB>假定每个字

HENNEH由4个字节

READDAER组成

(C))C(返回汉字的表示通常用两个字节表示一个汉字,为了与西文字符编码相区别(西文的ASCII码的最高一位编码值为0),表示一个汉字时,把两个字节的最高一位的编码值设定为1,则该编码集的最多编码数量为128*128。这种编码方案与西文传送中的把ASCII码的最高一位用作奇偶校验位有矛盾。返回3.进位记数法与进制转换进位记数法N

代表一个数值r

是这个数制的基(Radix,该数制所用的符号个数)i

表示这些符号排列的位序号Di是位序号为i的位上的一个符号是位号为i的位上的一个1代表的值,称为位权ri表示对m+k位的值求累加和N=i=m-1*-kDiri*是第i位上的符号所代表的实际值riDi返回十进制转二进制整数部分除2取余小数部分乘2取整2

11222521011010.625*210.25*200.5*21

0.0除尽为止

求得位数满足要求为止低高高低从二进制数求其十进制的值,逐位码权累加求和返回二到八或十六进制转换二到八从小数点向左右三位一分组(10011100.01)2=(234.2)8010

二到十六从小数点向左右四位一分组(10011100.01)2=(9C.4)16

0100

说明:整数部分不足位数对转换无影响,

小数部分不足位数要补零凑足,否则出错。返回二-十进制编码(BCD编码)用四位二进制表示一位十进制,16个编码状态选用其中的10个编码有多种方案,例如:

8421码,余3码,循环码又可区分为:有权码:每位上的1代表确定的值无权码:无法确定每位上的

1

代表的值返回000000011000000001000101000001

011120010

01010011

01103001101100010010140100

0111011001005010110001110101160110

1001101010107

0111

10101000100181000

10111100100091001

110001001111有权码

无权码8421余3码循环码84-2-1返回如何判定码权00000101114+(-2)+(-1)201104+(-2)验证每个码的值301014+(-1)401004从一编码求码权5

10118+(-2)+(-1)61010-2结论7

1001-1证明此编码系统为有权码8

1000

8911118+4+(-2)+(-1)返回如何判定码权000112+1=0验证各码的值101001

从一编码求码权20101

1301102401115

100061001结论7

1010

证明此编码系统为无权码

8

101191100返回4.数值数据在计算机内的格式定点小数:N=NNN……...Ns-1-n-2整数:N=NNN...NN01snn-1浮点数:N=

M

EE...EE

MM...M

ssm-110-1-2-n符号位

阶码位

尾数数码位

总位数短浮点数:

1

8

23

32长浮点数:

1

11

5264临时浮点数:

1

15

64

80IEEE标准:

阶码用移码,尾数用原码

基为2返回数值数据在计算机内的格式定点小数:N=NNN……...Ns-1-n-2整数:N=NNN...NN01snn-1浮点数:N=

M

EE...EE

M

M...M

ssm-110-1-2-n符号位

阶码位

尾数数码位

总位数短浮点数:

1

8

23

32长浮点数:

1

11

5264临时浮点数:

1

15

64

80IEEE标准:

阶码用移码,尾数用原码

基为2返回5.定点小数表示:NsN1N2…Nn

[X]=[X]=[X]=原X

1-X

-1<X<0反X(2-2)+X-n0<X<1-1<X<0补X

2+XMod(2-2)0<X<1-1

<X<0Mod20<X<1-n(纯小数)原码,反码,补码的定义返回定点小数表示:NsN1N2…Nn结论:原码为符号位加数的绝对值,0正1负

原码零有两个编码,+0和-0编码不同

原码难以用于加减运算,但乘除方便X

1-X

-1<X00

X<1定义:[X]原

=原码的定义实例:X1=0.10110-0.101100.0000

[X]原

=01011011011000000

10000

返回定点小数表示:NsN1N2…Nn结论:负数反码为符号位跟数每位的反,0正1负

反码零有两个编码,+0和-0的编码不同

反码难以用于加减运算,有循环进位问题X

(2-2-n)-X

-1<X0Mod(2-2-n)

0

X<1定义:[X]反

=反码的定义实例:X1=0.10110-0.101100.0000[X]反

=

01011010100100000

11111

返回定点小数表示:NsN1N2…Nn结论:补码最高一位为符号位,0正1负

补码表示为2*符号位加上数的真值

补码零有唯一编码,故补码还可以表示-1

补码能很好用于加减(乘除)运算X2+X

-1X0Mod20

X<1定义:[X]补

=模2补码的定义实例:X1=0.10110-0.101100.0000[X]补

=01011010101000000返回整数的编码表示整数的原码

反码

补码表示与定点小数的三种表示基本相同,差别仅表现在小数点的位置,可以认为整数的小数点在最低数值位的右侧。因此整数的模与用于表示整数的位数有关,讲课中不大用整数讲原

码定义例如:五位整数的编码:

X=+01110[X]原=001110[X]补=001110[X]反=001110X=-01110[X]原=101110[X]补=110010[X]反=110001返回原反补码表示小结正数的原码、反码、补码表示均相同,符号位为0,数值位同数的真值。零的原码和反码均有2个编码,补码只一个码负数的原码、反码、补码表示均不同,符号位为1,数值位:原码为数的绝对值;反码为每一位均取反码;补码为反码再在最低位+1;由[X]补求[-X]补:每一位取反后再在最低位+1;

由[X]补求X的真值:X=-1+

Xi*2-i

i=1n返回二、数据的算术运算(1)

补码加减法运算

原码一位乘法运算原码一位除法运算

补码一位乘法运算补码一位乘法运算(2)原码二位乘法运算

补码二位乘法运算其它快速乘除法运算方法简介返回补码加减法的实现[XY]补

=[X]补

[Y]补[X+Y]补=[X]补+[Y]补,[X-Y]补=[X]补+[-Y]补求[-Y]补,可

通过对[Y]补逐位取反,再在最低位加1完成溢出判断,同一件事实,三种不同的叙述方式:(1)

正+正得负或负+负得正(2)数字位有向符号位的进位,但符号位不产生向更高位的进位数字位无向符号位的进位,但符号位已产生向更高位的进位(3)双符号位的值为01

或10返回补码加减法运算实例X=0.1011Y=-0.0101模

4

补码(双符号位)[X]补

=001011,[Y]补

=111011 [-Y]补=000101

001011+111011

1000110

001011+000101010110X+Y,去掉最高位进位X-Y,结果溢出返回补码表示中的符号位扩展由[X]补求[X/2]补的方法

原符号位不变,且符号与数值位均右移一位,例如,[X]补=10010

则[X/2]补=110010不同位数的整数补码相加减时,位数少的补码数的符号位向左扩展,

一直扩展到与另一数的符号位对齐,例如:

01010101110000110101010111000011+1111111110011100+0000000000011100

01010101010111110101010111011111返回原码一位乘运算[X*Y]原

=(XS

+YS

)(X*Y)

例如:X=0.1101Y=-0.10110.11010000001011*0.10110001101101110100100111101101000100111100000010001111+1101X和

Y符号异或为负0.10001111最终乘积原码表示为:

110001111

手工运算过程计算机内运算的实现方法部分积乘数返回原码一位乘运算算法介绍

例如:X=0.1101Y=-0.10110.1101问题:*0.10111.加法器只有两个数据输入端

11012.加法器与乘运算术据位数相同

1101解决方案:

0000每次求出部分积,而不是一次总累加

+1101变每次左移被乘数为右移部分积0.10001111判乘数每一位的值用固定的一位线路

手工运算过程

返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101000000累加器初值取零值*0.1011+001101

1101

001101初值0加被乘数

11010001101部分积右移,

0000将移出的一位保存起来

+1101求第一次部分积0.10001111

手工运算过程

返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101000110*0.1011+001101

1101010011前次部分积加被乘数

1101

00100111部分积右移

0000将移出的一位保存起来

+1101求第二次部分积0.10001111

手工运算过程

返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101001001*0.1011+000000

1101001001前次部分积加0

1101000100111部分积右移

0000将移出的一位保存起来

+1101求第三次部分积0.10001111

手工运算过程

返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101000100*0.1011+001101

1101010001前次部分积加被乘数

11010010001111部分积右移

0000将移出的一位保存起来

+1101

求第四次部分积0.10001111

手工运算过程

再用一步完成2数符号异或求积的符号,结果为-0.10001111返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101000100*0.1011+001101

1101010001

11010010001111

0000

+11010.10001111

手工运算过程

若把乘数放在一个移位寄存器中,该寄存起又用来接收加法器的移位输出,则判乘数的某一位也更方便返回原码一位乘运算[X*Y]原

=(XS

+YS

)(X*Y)

例如:X=0.1101Y=-0.10110.11010000001011*0.10110001101101110100100111101101000100111100000010001111+1101X和

Y符号异或为负0.10001111最终乘积原码表示为:

110001111

手工运算过程计算机内运算的实现方法部分积乘数返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101问题:*0.10111.加法器只有两个数据输入端

11012.加法器与乘运算术据位数相同

1101解决方案:

0000每次求出部分积,而不是一次总累加

+1101变每次左移被乘数为右移部分积0.10001111判乘数每一位的值用固定的一位线路

手工运算过程

返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101000000累加器初值取零值*0.1011+001101

1101

001101初值0加被乘数

11010001101部分积右移,

0000将移出的一位保存起来

+1101求第一次部分积0.10001111

手工运算过程

返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101000110*0.1011+001101

1101010011前次部分积加被乘数

1101

00100111部分积右移

0000将移出的一位保存起来

+1101求第二次部分积0.10001111

手工运算过程

返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101001001*0.1011+000000

1101001001前次部分积加0

1101000100111部分积右移

0000将移出的一位保存起来

+1101求第三次部分积0.10001111

手工运算过程

返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101000100*0.1011+001101

1101010001前次部分积加被乘数

11010010001111部分积右移

0000将移出的一位保存起来

+1101

求第四次部分积0.10001111

手工运算过程

最后一步2数符号异或求积的符号返回原码一位乘运算[X*Y]原

=(XS

+YS

)(X*Y)

例如:X=0.1101Y=-0.10110.11010000001011*0.10110001101101110100100111101101000100111100000010001111+1101X和

Y符号异或为负0.10001111最终乘积原码表示为:

110001111

手工运算过程计算机内运算的实现方法返回原码一位乘运算

例如:X=0.1101Y=-0.10110.1101000100*0.1011+001101

1101010001前次部分积加被乘数

11010010001111部分积右移

0000将移出的一位保存起来

+1101求第四次部分积0.10001111

手工运算过程

若把乘数放在一个移位寄存器中,该寄存起又用来接受加法器的移位输出,则判乘数的某一位也更方便返回原码一位乘法加法器部分积(高位)被乘数乘数/(低位积)

F最低位加运算移位线路每位1套所用逻辑线路框图返回原码一位乘法000000

1011加法器部分积被乘数乘数

F最低位加运算移位线路每位1套000000001101

1011

为各寄存器给初值返回原码一位乘法000000

1011加法器部分积被乘数乘数

F

最低位加运算移位线路每位1套000000001101

1011001101000110

11011011

000110

1

101

001101第一次求部分积返回原码一位乘法000000

1011加法器部分积被乘数乘数

F最低位加运算移位线路每位1套000000001101

1011000110

11010100110100111101

10

11

001001

000110

001001

10

11

1

101

第二次求部分积返回原码一位乘法000000

1011加法器部分积被乘数乘数

F最低位加运算移位线路每位1套000000001101

1011000110

1101

10

11

001001

000110

001001

10

11

000100

000100

10

11

1

101

111

1

111

0

000110

11

11

001101

001101第三次求部分积返回原码一位乘法000000

1011加法器部分积被乘数乘数

F最低位加运算移位线路每位1套000000001101

1011000110

1101

10

11

11

11

001000

001001

000110

001001

10

11

000100

000100

11

11

1

101

111

1

111

1

001000

11

11低位积

010001

010001第四次求部分积高位积返回原码一位乘法000000

1011加法器部分积被乘数乘数

F最低位加运算移位线路每位1套000000001101

1011000110

1101

10

11

11

11

001000

001001

000110

001001

10

11

000100

000100

1

101

111

1

111

1

001000

11

11低位积

高位积符号位异或,积符号得负,结果为:110001111返回原码一位乘运算[X*Y]原

=(XS

+YS

)(X*Y)

例如:X=0.1101Y=-0.10110.11010000001011*0.10110001101101110100100111101101000100111100000010001111+1101X和

Y符号异或为负0.10001111最终乘积原码表示为:

110001111

手工运算过程计算机内运算的实现方法返回除法运算在计算机内实现除运算时,存在与乘法运算类似的几个问题:加法器与寄存器的配合,被除数位数更长,商要一位一位地计算出来等。这可以用左移余数得到解决,且被除数的低位部分可以与最终的商合用同一个寄存器,余数与上商同时左移。除法可以用原码或补码计算,都比较方便,也有一次求多位商的快速除法方案,还可以用快速乘法器完成快速除法运算。返回原码一位除运算

[Y/X]原

=(XS

YS

)(|Y|/|X|)

原码一位除是指用原码表示的数相除,求出原码表示的商。除操作的过程中,每次求出一位商。从理解原理考虑,用恢复余数除法讲解计算机内的实现方法更直观方便,即确定上商应为1还是为0时,必须用被除数或中间余数减去除数,通过检查本次求得的余数为正还是为负才能知道,而不象人计算时用眼睛直接看出来的。若求出一个为负的余数来,通常应首先恢复其值为正,再求下一位商才有道理。但计算机内从来不用这种办法,而是直接用求得的负余数求下一位商。可以吗?为什么?返回

[Y/X]原

=(X+Y)(Y/X)

例如:X=-0.1101Y=0.1011

被除数高位/余数被除数低位/商

0.1101 00101100000

初态

0.11010.10110 11110000000第1次

1101 01001000010第2次

10010 00101000110第3次

1101 11101001100第4次

10100 00011101101

第5次

1101 0111原码一位除运算X和

Y符号异或为负最终商原码表示为:11101

余数为:0.0111*2-4返回加减交替除法原理证明1.若第i-1次求商余数为+Ri-1

本次商1且余数左移1位得2Ri-1

2.则第

i

次求商Ri=2Ri-1-Y,若Ri

0,则….,

若Ri<0,则商0,恢复余数为正且左移得2(Ri+Y)3.则第i+1次求商Ri+1=2(Ri+Y)-Y

=2Ri+Y

实质是:

对上次的负差值直接左移,本次用+Y求商即可返回00101111001111111011110000110100100101001011001100010100101011001111110111101000110100011100000开始情形

-Y00000

<0,

商000000左移1位

+Y00001

>0,

商100010左移1位

-Y00011

>0,

商100110左移1位

-Y00110<0,

商001100左移1位

+Y0110

1>0,

商1被除数(余数)商+)+)+)+)+)返回原码一位除运算

[Y/X]原

=(X+Y)(Y/X) 例如:X=-0.1101Y=0.1011

0.1101 00101100000

初态

0.11010.10110 11110000000第1次

1101 01001000010第2次

10010 00101000110第3次

1101 11101001100第4次

10100 00011101101

第5次

1101 0111X和

Y符号异或为负,最终商原码表示为:11101

余数为:0.0111*2-4返回补码乘除法运算原码乘、除法不难实现,但有两个问题:

符号位与数值位分别处理,不方便;

若数据为补码形式,可能多两次原补码变换。也可以直接用补码完成乘、除法运算, 即从补码开始,直接得到补码的积或商。下面看一看补码乘除运算的实现算法。返回[X]补

=XsX1X2…….Xn[Y]补

=YsY1Y2…….Yn先复习两个概念:①由[X]补求[X/2]补

[X]补[X/2]补

=XsXsX1X2…Xn②把[Y]补的符号位与数值位同等对待

[Y]补

Y

=

-Y0

Yi*2-i =(Yi+1-

Yi)*2-ii=1nni=0补码一位乘法的实现算法推导过程:返回补码乘法运算算法的推导过程

[X*Y]补=[X]补*[Y]补[Y]补

Y=(-Y0+

Yi*2-i)=-Y0*20+Y1*2-1

+Y2*2-2

+…+Yn*2-n=-Y0*20+(Y1*20-Y1*2-1)

+(Y2*2-1-Y2*2-2)

+…+=(Y1-Y0)*20+(Y2-Y1)*2-1+…+(Yn+1-Yn)*2-n

=(Yi+1-Yi)*2-ii=1ni=0n分解为单项形式变每位上的1为高1位上的1个+1加本位上的1个-1写成为求累加和形式合并同次幂的项最低1位后再补1位返回补码乘法运算的结论

[X*Y]补=[X]补*[Y]补通过用Y的值乘[X]补,求出[X]补*[Y]补,不必区分符号位与数值位。乘数最低一位之后要补初值为0的一位附加线路,并且每次乘运算需要看附加位和最低位两位取值的不同情况决定如何计算部分积,其规则是:[X]补*

(Yi+1-Yi)*2-i

i=0n00+001+[X]补10+[-X]补11+0返回0000000000001100111100111110011111000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论