第2章 计算机中信息的表示方法pptConvertor.docx
《第2章 计算机中信息的表示方法pptConvertor.docx》由会员分享,可在线阅读,更多相关《第2章 计算机中信息的表示方法pptConvertor.docx(20页珍藏版)》请在冰豆网上搜索。
![第2章 计算机中信息的表示方法pptConvertor.docx](https://file1.bdocx.com/fileroot1/2023-1/10/ef389cc4-1140-420d-bbcf-c3ac4181ffbc/ef389cc4-1140-420d-bbcf-c3ac4181ffbc1.gif)
第2章计算机中信息的表示方法pptConvertor
第2章计算机中信息的表示方法
2.1概述
计算机要对各种信息或数据进行处理,首先遇到的第一问题是必须将各种信息以计算机可以识别的方式表示,并且以一定的形式存储在计算机(存储器)中。
现代计算机大都是以二进制表示的数字计算机。
采用二进制,这是因为二进制数只有“0”和“1”两个不同的数字符号,易于用物理器件实现,如晶体管的“截止/导通”、电容的“有电荷/无电荷”、平面的“有反射光/无反射光”。
只要规定一个状态表示“1”另一状态表示“0”即可。
同时,二进制数的运算规则简单:
0+0=0;1+0=1;0+1=1;1+1=0并向高位进1;
0-0=0,1-1=0;1-0=1;0-1=1从高位借1;
1×1=1;1×0=0;0×1=0;0×0=0),运算器易于用电子元件实现。
本章主要内容包括:
①数据的定义及分类;
②不同进制数值数据之间的相互转换方法;
③什么是机器数?
数值数据的符号及小数点如何用“0”和“1”表示成机器数。
④原码、补码、反码的定义、求法、特点、所表示的真值数的范围。
⑤定点数与浮点数的概念。
⑥非数值数据(字符、文字、图形、图像、声音)机器数表示方法。
数据表示研究的是计算机硬件能够直接识别,可以被指令系统直接调用的数据类型。
国际标准化组织(ISO)对数据和信息都进行了专门定义:
其中数据定义是:
“数据是对事实、概念或指令的一种特殊表达形式,这种特殊表达形式可以用人工的方式或自动化装置进行通信、翻译转换或者进行加工处理”。
数字、文字、符号、图形、图像、声音都包括在数据范畴中。
数据的概念要比人们日常生活中理解的“可以比较其大小的数值”广泛的多。
信息的定义是:
“信息是对人有用的数据,可能影响人们的行为和决策的数据”。
计算机对信息进行处理,实质上是由计算机对数据进行加工处理得到对人类有用的信息过程,不同的部门根据得到的信息产生的决策和行动也往往不同。
在很多场合,数据和信息往往并不严格加以区别。
数据
数值数据
非数值数据
文字、字符
图形、图像
声音
数据类型
无符号数
有符号数
2.2数据信息的机内表示方法
2.2.1数值数据在机内的表示
数值数据是计算机进行算术运算所使用的操作数,它有大小,可以在数轴上表示出来。
数值数据又分有符号数和无符号数,无符号数常用来表示存储单元的物理地址。
表示一个数值数据有三个基本的要素:
①进位计数制;
②小数点的表示;
③符号的表示。
2.2.2进位计数制及相互转换
1.进位计数制
按照一定进位方法进行计数的数制称为进位计数制,简称进制。
在日常生活中,人们习惯使用的进制是十进制(Decimal),但在计算机内部采用的进制却是二进制(Binary)。
由于用二进制表示的数的位数长,书写不便,为了便于书写常采用八进制(Octal)和十六进制(Hexadecimal)作为中间进制。
要将一个数表示成计算机可以识别的二进制数,首先必须将各种不同进制的数转换成二进制数。
一个任意进制可以表示为:
S=∑Ki×R Ki={0,1,2,…R-1}
(1)基数
进制是以表示数值可以选用基本数码的个数来命名的,计数制允许选用的基本数码的个数称为基数(简称基),用R表示。
i
(2)权
在进位计数制中,同一个数码处在数的不同位置上,它所代表的数值的大小是不同的。
每一个数位被赋于R的数值称为位权,简称权。
(3)进位计数制的按权展开式
在进位计数制中,每个数位的数值等于该位数码与该位的权之乘积,若用Ki×R表示第i位的数码,则该位的数值为KiR。
各种进位制的数都可以写成按权展开的多项式和的形式,一个以R为基数的数S可表示为:
i
i
i
S=∑Ki×R=Kn×R+Kn-1×R……+K1×R+K0×R+K-1×R+K-2×R+……+K-m×R=S1.S0
其中:
S的整数部分:
S1=Kn×R+Kn-1×R……+K1×R+K0×R
S的小数部分:
S0=K-1×R+K-2×R+……K-m×R
2.进位计数制之间的相互转换
(1)二进制数、八进制数、十六进制数转换成十进制数
二进制、八进制、十六进制数转换成十进制数常用的方法是“按权展开转换法”。
具体做法是二进制、八进制、十六进制数按照权展开,然后再按照十进制求和,结果就是所要的十进制数。
【例2-1】将二进制数1100.11转换成十进制。
(1100.11)2=2+2+2+2=8+4+0.5+0.25=12.75
3
2
-1
-2
【例2-2】将八进制数266.2转换成十进制。
(266.2)=2×8+6×8+6×8+2×8=128+48+6+0.25=182.25
2
1
-1
0
8
【例2-3】将十六进制数0A3.4转换成十进制。
(0A3.4)=10×16+3×16+4×16=160+3+0.25=163.25
(2)十进制数转换成二进制数
十进制实数既有整数部分,又有小数部分,其转换方法是将整数部分和小数部分分别转换,然后将这两部分拼起来即可。
有减权定位法和除2取余法(小数乘2取整法)两种方法。
【例2-8】将十进制数63.6875转换成二进制数
(63)10=()2
(0.6875)10=(0.1011)2
所以(63.6875)10=(.1011)2
(3)二进制数转换成八进制数,十六进制数
因为八、十六进制的基数分别为8=2和16=2,所以二进制数转成八进制数和十六进制数时非常简单:
三位二进制数对应一位八进制数,四位二进制数对应一位十六进制数。
①二进制数转换到八进制数
二进制数转换八进制数的方法是:
从小数点的位置开始,整数部分向左、小数部分向右,每三位二进制数分为一组,对应一位八进制数,不足三位者补零,整数在高位补,小数在末位补。
(保证补0不影响数的大小)
3
4
【例2-9】将二进制数.1011转换为八进制数
(.1011)2=(010110101.101100)2=(265.54)8
②二进制数到十六进制数的转换
二进制数到十六进制数的转换方法与二进制数到八进制数转换方法类似,每四位二进制数对应一位十六进制数。
【例2-10】将二进制数.10101转换到十六进制数
(.10101)2=(011110110101.10101000)2=(7B5.A8)16
(4)八进制数、十六进制数转换成二进制数
①八进制数转换成二进制数
八进制数转换成二进制数的方法是:
每一位八进制数用相应的三位二进制数代替。
其中整数中的最高位,小数部分的末位0可以省去不写。
【例2-11】将八进制数(75.26)8转换二进制数
(75.26)8=(111101.010110)2=(.01011)2
②十六进制数转换成二进制数
十六进制数转换成二进制数的方法是:
每一位十六进制数用相应的四位二进制数代替。
其中整数中的最高位,小数部分的末位0可以省去不写。
【例2-12】将十六进制数(48.A)16转换二进制数
(48.A)16=(01001000.1010)2=(.101)2=(110.5)8
各进制数之间的转换如图所示。
一位八进制表示三位二进制
数据进制之间相互转换示意图
四位二进制表示一位十六进制
一位十六进制表示四位二进制
三位二进制表示一位八进制
按照权展开,再按照十进制相加
整数部分除以2取余;小数部分乘以2取整
从上面例2-11可以看出,同一数值表示成不同进制形式时,基数R越大,数码就越短,字码形式越多,分辨率越高。
但到目前为止,计算机内部信息都是采用二进制形式表示,这主要因为:
①二进制形式便于物理元件的实现
二进制数只有“0”和“1”两个数字,因此,可以用物理元件的两种稳定状态来表示。
例如:
晶体管的导通和截止,只要规定其中一个状态为"1",另一个状态就为"0",就可以表示二进制数了。
要找到有十种稳定状态的物理元件表示十进制数是很困难的。
②二进制运算规则简单
十进制数作乘法运算时,需用九九乘法表,而二进制乘法运算规则只有四个:
0×0=0;0×1=0;1×0=0;1×1=1
二进制数运算方法简单,实现运算的电路也相应简单。
可以用二进制数码“0”、“1”表示真、假逻辑量,可使计算机方便地进行逻辑运算。
二进制也有书写冗长,阅读不便的缺点,所以,人们在书写和表达时常用既能克服二进制缺点,又能与二进制直接转换的八进制和十六进制作为中间过渡进制。
2.2.3数的符号表示
由于计算机中只有“0”“1”字符,所以符号也必须用“0”“1”来表示,即数字化。
机器数:
数在计算机中的二进制表示形式称为机器数。
1.无符号数和有符号数
机器数通常有两种形式,无符号数和有符号数。
无符号数:
机器数的所有二进制位都用来表示数值,称无符号数。
一般在全部正数运算且不出现负值结果的场合可以省略符号位,使用无符号数表示,常用于表示地址。
有符号数:
将数的符号也数值化的数(连同符号一起用二进制数来表示的数)称为有符号数。
通常用“0”表示“+”号,“1”表示“−”号,符号放在二进制数的最高位,称为符号位。
真值:
因为符号在计算机中占据一位,机器数的形式值就不等于真正的数值,为了区别起见,我们把带符号位的机器数所对应的数值称为机器数的真值。
2.有符号数的表示
在计算机中有符号数的表示是将符号和数一起进行编码,常用的编码有原码、补码和反码。
在这些编码中,通常用一位(一般是最高位)来表示符号,剩余的位数表示数值部分的编码。
(1)原码表示法
在原码表示法中,最高位为符号位,其余位为数的绝对值。
①原码的定义(机器字长为n+1,其中一位符号位)
②原码的求法
原码表示直观,与真值的转换方便,只要将真值符号位的“+”用“0”,“-”用“1”表示,剩下的位数就是真值的绝对值了。
用原码表示的机器数进行乘除运算比较方便,只要将数值部分直接乘除,符号位相异或就可以获得正确的结果。
但是进行加减运算时,既要考虑数的绝对值大小又要考虑数的符号,比较麻烦。
原码的另一个缺点是零的表示不是惟一的(假设机器字长为4):
[+0]原=0.000[-0]原=1.000(小数)
[+0]原=0000[-0]原=1000(整数)
(2)补码表示法
为了克服原码表示法的上述两个缺点,引入了补码的概念,补码表示的数在进行加减运算时,符号位可以看成数值一起参加运算,只要不溢出(数的大小超过机器数表示的范围称溢出)结果都是正确的,从而简化了加减法运算规则,简化了运算器的设计。
①模和同余的概念
模:
一个计量器的容量或一个计量单位叫做模或模数,记作M。
如四位二进制数它的模M=2=16。
同余:
设a,b两整数被同一正整数M去除而余数相同,则称a、b对M同余。
记为a=b(modM)。
如:
9÷12=(12-3)÷12=1+(-3)÷12即9和-3是关于模12是同余的。
具有同余关系的两个数具有互补关系,即-3的补码是9。
这样求一个负数的补码就将模加上该负数即可:
(-3)+12=9。
4
②补码的定义(机器字长为n+1,其中一位符号位)
③求法
从补码的定义可以看出,正数的补码和原码相同,都等于真值。
负数的补码可以用定义来求,也可以用更直观的方法来求:
原码除符号位外按位取反再在最低位加1(符号位用1表示,数字位直接取反再在最低位加1)。
【例2-12】求X=-1100的补码(机器字长为5位)
[X]补=10011+1=10100
【例2-13】求X=-0.1100的补码(机器字长为5位)
[X]补=1.0011+0.0001=1.0100
补码求真值:
正数的补码求真值同原码一样。
负数补码除符号位外按位取反再在最低位加1得原码,然后由原码得真值。
【例2-14】求[X]补=10100的真值
除符号位外按位取反再在末位加1(得到原码)=11011+1=11100
真值X=-1100
④补码的表示范围(机器字长为n+1位)
小数:
-1≤X≤1-2
整数:
-2≤X≤2-1
在补码的定义中负数的定义域扩大了一个数,且不再有负零。
补码的零只有一种表示:
[0]补=[-0]补=[+0]补=0000
练习题
-n
(3)反码的表示法
反码一般用来作为原码求补码或补码求原码的工具,计算机中很少直接采用反码进行数的运算。
①反码定义:
根据定义,正数的反码与原码相同,负数的反码将符号位用“1”表示,数值位按位取反即可。
反码的表示范围与原码的表示范围是一样的。
(4)三种码的比较
①最高位表示符号位,“1”表示负数,“0”表示正数。
②三种码的正数表示相同。
③负数的原码、补码和反码符号位用“1”,原码的数值部分是真值的数值部分,反码是“按位取反”,补码是真值的数值“按位取反末位加1”。
④原码适合乘除运算。
补码适合加减运算,在运算过程中符号位和数值位一起参加运算。
只要不超过数的表示范围,结果都是正确的。
(这一点在第3章中讨论)
⑤原码和反码所能表示的数是关于0对称的,整数±(2-1),小数为±(1-2)
⑥补码在负数上多一个最小负数,即整数:
-2,小数为-1。
⑦原码和反码有±0,而补码中0的表示是惟一的。
n
2.2.4数的小数点表示
在进行算术运算时,需要指出小数点的位置,在计算机中,小数点有两种表示方法:
定点表示法和浮点表示法。
1.定点表示法
定点表示法约定数据的小数点的位置固定不变,小数的小数点通常放在有效数字的前面符号的后面,整数的小数点就放在有效数字的末尾,这就形成了定点小数和定点整数。
无论是整数还是小数,小数点都是以隐含的方式来表示,不占有效的数据位,这样做的目的是字长一定的计算机,数的表示范围最大。
只有定点数据的计算机称为定点计算机。
定点计算机只能表示纯小数或整数,所能表示的数的范围有限,尤其是定点小数,数的表示范围小于1,这在实际使用时是很不方便的,现代计算机大多采用浮点表示法。
假设机器字长为n+1位,其中有一位是符号位,三种不同的编码定点数的表示范围为:
小数:
原码:
-(1-2)≤X≤1-2
补码:
-1≤X≤1-2
反码:
-(1-2)≤X≤1-2
整数:
原码:
-(2-1)≤X≤2-1
补码:
-2≤X≤2-1
反码:
-(2-1)≤X≤2-1
-n
n
n
假设机器字长为n+1位
2.浮点表示法
任意一实数,皆有整数部分又有小数部分,是没有办法直接采用隐含方式来表示小数点位置的,这时可以采用浮点法来表示。
对于任意一数N,采用科学计数N=M·R=±m·R。
其中,m中小数点的位置随着E的变化而左右移动,小数点左移一位,E加1,小数点右移一位,E减1。
在这种表示方法中,小数点的位不是固定的而是可以左右移动,我们称之为浮点表示法。
±E
±E
在浮点表示法中,E称为浮点数的阶数,用定点整数表示,一般采用补码或移码表示。
M称浮点数的尾数,用定点小数表示。
尾数的符号表示数的正负。
R是阶码的底,又称尾数的基数(简称基)。
在二进制中,基为2,在机器数中一般可以省略,以隐含的方式表示。
3.规格化浮点数及其表示范围。
一个浮点数可以写成多种形式,
如0.001=0.0001×2=0.010×2
一般来说,尾数右移k位(在计算机中小数点都是以定点隐含方式给出的,尾数右移相当于小数点左移,尾数左移相当于小数点右移。
),阶码就要加k,尾数左移k位,阶码就要减k,这样才能保持整个浮点数的值不变。
用浮点数表示的数不是惟一的,给计算机系统的处理带来了很大的麻烦,为使浮点数表示惟一,常采用规格化的浮点数来表示。
当基是2时,规格化的浮点数的尾数为:
±0.1××××···
则规格化的浮点数尾数所对应的:
正数的原、补码:
0.1××××···
负数的原码:
1.1××××···
负数的补码:
1.0××××···
对于非规格化的浮点数,总是可以通过尾数移位和调整阶码的方法将其转化成规格化的浮点数。
规格化的浮点数表示是惟一的。
4.移码
在浮点数中,阶码可正可负,在进行加减运算时必须先进行对阶操作(两个操作数的阶码相同,尾数才能相加减),对阶要比较数的大小(比较符号位),操作比较复杂。
为了克服这一缺点,将阶码用移码表示,使阶码不出现负数。
移码的定义:
如果阶码有n+1位,则阶码X的移码为:
[X]移=2+X—2≤X≤2
其中2为偏置常数
n
移码表示的数全0为最小,全1为最大,移码的大小直观地反映了真值的大小,不必考虑符号位,这样,在浮点运算中对阶就比较方便了。
在移码表示中,当X<0,[X]移最高位为0,当X≥0时,[X]移最高位为1,所以最高位仍然可以看成符号位,只是与原码、反码表示相反。
[X]移与[X]补除符号位外其他位都相同。
在移码中0有惟一的编码[000···0]移=1000···0。
[X]移等于全0时,表明阶码最小。
5.IEEE754标准浮点格式
现代计算机中,浮点数一般采用IEEE制定的IEEE754标准浮点格式,其规定的浮点数格式为:
1位数符
(1位阶符)阶码.
.规格化的尾数
按照IEEE标准,规定的浮点数有3种:
䦋㌌㏒㧀좈琰茞ᓀ㵂Ü
数符位数
阶码位数
尾数位数
总位数
短实数
1
8
23
32
长实数
1
11
52
64
临时实数
1
15
64
80
短实数又称为单精度浮点数。
长实数又称为双精度浮点数。
临时实数主要用于进行浮点数运算时,保存临时的计算结果。
通常在进行运算时短实数或长实数都转换临时实数。
运算完后再转换回去。
以32位短实数为例,最高是数符,其后是8位阶码,用移码表示,但偏置常数为2−1=127,而不是2=128,隐含以2为基数。
其余23位为尾数。
尾数用原码表示。
由于尾数采用规格化表示,尾数的最高位总是1,故在标准中不被直接表示,实际位数是24位。
在IEEE754标准浮点格式中,阶数是整数,尾数是纯小数,小数点仍然可以采用前面讨论的定点数的方法,以隐含的方式表示,不占用有效的数值位。
1位数符
(1位阶符)阶码.
.规格化的尾数
在浮点数表示中,阶数的位数决定了数的表示范围,阶数位数越多,表示的数的范围越大,尾数的位数决定了数的表示精度,尾数位数越多,表示的数的精度越高。
浮点数的表示和计算要比定点数复杂的多。
现代计算机的CPU中大都包含浮点运算器。
1位数符
(1位阶符)阶码.
.规格化的尾数
例.将二进制数+1101.101用规格化浮点数格式表示。
格式要求:
阶码4位,含1位符号位;尾数8位,含1位符号位。
阶码和尾数均用补码表示,阶码以2为底。
解:
首先规格化:
1101.101=0.×2
尾数的补码:
[0.]补=0.
阶数的补码:
[4]补=0100
尾符一位
阶码4位
尾数7位
0
0100
4
2.2.5十进制数据的表示
十进制数在计算机中是以十进制的二进制编码BCD(BinaryCodedDecimal)码来表示的。
大多数计算机都有专门的十进制运算指令,可以对十进制数直接进行处理。
4位二进制共有16种状态,用4位二进制表示1位十进制,有多余的六个状态,所以有多种表示方法,可以产生多种BCD码。
1.十进制数据有权码
十进制数据有权码是指表示每一个十进制数位的四个二进制位(称为基2码)都有一个确定的权。
常见的有8421码(也称自然码Nature,NBCD);2421码;5211码;84-2-1码;4311码。
十进制数
8421码
2421码
5211码
84-2-1码
4311码
0
0000
0000
0000
0000
0000
1
0001
0001
0001
0111
0001
2
0010
0010
0011
0110
0011
3
0011
0011
0101
0101
0100
4
0100
0100
0111
0100
1000
5
0101
1011
1000
1011
0111
6
0110
1100
1010
1010
1011
7
0111
1101
1100
1001
1100
8
1000
1110
1110
1000
1110
9
1001
1111
1111
1111
1111
除8421码外,其他几种有权码具有以下特点:
任何两个十进制数位相加产生10或大于10时,相应的基2码会在最高位向左产生进位,便于实现逢十进一的计数和加法规则。
任何两个数相加之和等于9的十进制数位的基2码互为反码,即满足二进制数按9互补的关系。
2.十进制数据无权码
十进制数据无权码是指表示每一个十进制数位的四个二进制位没有一个确定的权。
常用的有余3码和格雷码(又称循环码)
余3码的编码规则是在8421码的基础上,将每一个代码都加0011而形成。
其主要优点是执行加法运算时,能正确产生进位,而且还给减法带来方便。
十进制数
8421码
余3码
格雷码
0
0000
0011
0000
1
0001
0100
0001
2
0010
0101
0011
3
0011
0110
0010
4
0100
0111
0110
5
0101
1000
1110
6
0110
1001
1010
7
0111
1010
1000
8
1000
1011
1100
9
1001
1100
0100
格雷码(又称循环码)其编码规则是任何两个相邻的代码只有一个二进制位不同,其余三位必须相同。
这样使得从一个编码变到下一个编码时只有一位发生变化,变码速度最快,有利于得到更好的译码波形,故在D/A和A/D转换电路中得到很好的运行结果。
并且用数字逻辑电路实现时不会产生冒险竞争。
2.3非数值数据的表示
字符、汉字、图形、图像、语言以及逻辑数据统称为非数值数据。
它们在计算机中也是用“0”“1”编码来表示的。
2.3.1逻辑数据
逻辑数据有若干位二进制数字组成,每位之间没有权的内在联系,只有逻辑值:
“真”和“假”。
逻辑数据只能参加逻辑运算,如逻辑与、逻辑或、逻辑非,特点是只进行本位操作。
2.3.2字符编码
字符也必须用“0”“1”表示。
使用最广泛的就是ASCII(AmericanStandardCodeForInformationInterchange美国标准信息交换码)码。
在这种编码中,每个字符用8个二进制位来存储和发送。
最高位一般设置为“0”或用作数据传输时错误检测的奇偶校验位。
余下的七位最多可以表示128个不同的字符。
P27
在ASCII码中,数字0~9的ASCII码(~)的低四位同0~9的BCD码(0000~1001)完全一样。
与另外一种EBCDIC码(ExtendedBinaryCodedDecimalInterchangeCode)表示的0~9的低四位(~)也是一样的。
由ASCII码可以很方便地获得BCD码,将ASCII与0FH相“与”就可以获得BCD码。
数字的ASCII码=30H+数字的BCD码。
AND
26个英文字母分大、小写。
大写字母A~Z的A