【考点2】数据的表示及运算
1计算机中数据的表示
(1)数制的转换(如下表1-3所示)
表1-3 数制的转换
(2)码制(如下表1-4所示)
表1-4 码制
(3)浮点数
浮点数的表示方法是在计算机的存储单元中将数的有效数字和数的范围分开表示,数的小数点位置随比例因子的不同而在一定范围自由浮动。按IEEE754标准,32位浮点数和64位浮点数的标准格式如图1-1所示。
图1-1 浮点数的标准格式
其中各部分含义为:
①符号位S:
S是浮点数的符号位,占1位,安排在**位,S=0表示正数,S=1表示负数。
②尾数域M:
由于规格化的浮点数的尾数域最左位(**有效位)总是1,因此尾数域所表示的值是1.M。
③阶码E:
将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。
【说明】阶码全为0或1位特殊用途,计算其表示范围时不可计算在内。
2校验码
(1)奇偶校验码
奇偶校验是一种简单有效的校验方法。这种方法通过在编码中增加一个校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验)。
(2)海明码
海明不等式:用K代表其中有效信息位数,r表示应添加的校验码位数,它们之间的关系应满足:K+r≤2r-1,假设信息位K=16,代入关系式,可得r的最小值为5,即最少需要5位校验码。
3逻辑代数及逻辑运算
逻辑运算如下表1-5所示。
表1-5 逻辑运算
4机器数的运算
(1)机器数的加减运算
①原码加、减法
a.两个相同符号的原码数相加
只需将数值部分直接相加,运算结果的符号与两个加数的符号相同。
b.两个不同符号的原码数相加
应进行减法运算。其方法是:先比较两个数**值的大小,然后用**值大者的**值减去**值小者的**值,结果的符号取**值大者的符号。
②补码加、减法
a.补码加法的运算法则是:和的补码等于补码求和,即[X+Y]补=[X]补+[Y]补;
b.补码减法的运算法则是:差的补码等于被减数的补码加上减数取负后的补码。因此,在补码表示中,可将减法运算转换为加法运算,即[X-Y]补=[X]补+[-Y]补;
c.由[X]补求[-X]补的方法是:[X]补的各位取反(包括符号位),末尾加1。
③溢出及判定
a.溢出的定义
溢出是指在确定了运算的字长、数据的表示方法和数据的范围的情况下,运算结果超出所能表示的数据范围。发生溢出时,运算结果肯定是错误的。
b.溢出的条件
只有当两个同符号的数相加(或者是相异符号数相减)时,运算结果才有可能溢出。
c.常用的溢出检测机制
双符号位判决法、进位判决法、根据运算结果的符号位和进位标志判别、根据运算前后的符号位进行判别。
(2)浮点运算
①浮点加减运算
设有浮点数X=M×2i,Y=N×2i,求X±Y的运算过程如下:
a.对阶
使两个数的阶码相同。令K=|i-j|,把阶码小的数的尾数右移K位,使其阶码加上K。
b.求尾数和(差)
c.结果规格化并判溢出
若运算结果所得的尾数不是规格化的数,则需要进行规格化处理。当尾数溢出时,需要调整阶码。
d.舍入
在对结果进行右移时,尾数的**位将因移出而丢掉。另外,在对阶过程中也会将尾数右移使**位丢掉。这就需要进行舍处理,以求得最小的运算误差。
e.溢出判别
以阶码为准。若阶码溢出(超过**值),则运算结果溢出;若阶码下溢(小于最小值),则结果为0,否则结果正确无溢出。
②浮点乘除运算
浮点数相乘,其积的阶码等于两个乘数的阶码相加,积的尾数等于两个乘数的尾数相乘;浮点数相除,其商的阶码等于被除数的阶码减去除数的阶码,商的尾数等于被除数的尾数除以除数的尾数。乘除运算的结果都需要进行规格化处理并判断阶码是否溢出。