(五)定点数与浮点数
1、定点数
(1)定义
小数点的位置固定不变的数
(2)分类
定点整数:纯整数
定点小数:纯小数
当机器字长为n时,定点数的补码和移码可表示
个数,而其原码和反码只能表示
-1个数(0的表示占用了两个编码),因此定点数所能表示的数值范围比较小,运算中很容易因结果超出范围而溢出,所以才引入浮点数
2、浮点数
(1)定义(科学表示法)
小数点位置不固定的数,它能表示更大范围的数
(2)表示格式
N =
(E是阶码,F是尾数)
例如:二进制数1010.0101=
x0.10100101=
x0.0010100101
在浮点数表示法中,阶码通常为带符号的纯整数,尾数为带符号的纯小数
表示格式:阶符+阶码+数符+尾数
标准表示:小数点永远在最低有效位后面,如:134=1.34*100
(3)注意事项
浮点数表示不唯一,随小数点位置而改变
浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定
(六)机器数的运算
1、加减运算
-
减法一般转化为加法
(1)原码加减法
相加的原码符号相同:只需将数值部分直接相加,符号是一样的
相加的原码符号相异:应进行减法运算。比较两个数绝对值的大小,将两个绝对值进行作差,绝对值大的减绝对值小的(只有绝对值部分参与计算),结果的符号取绝对值大的符号
原码表示的机器数进行减法运算是很麻烦的,所以在计算机在很少被采用
(2)补码加减法(重要)
补码加法:[X+Y]补=[X]补+[Y]补
补码减法:[X-Y]补=[X]补+[-Y]补
由[X]补求[-X]补的方法是:[X]补的各位取反(包括符号位),末尾加“1”
多数计算机都采用补码加减运算法
2、溢出与判定(重要)
确定运算的字长和数据的表示方法后,数据的范围也就确定了
运算结果超出范围会发生溢出,计算结果错误
只有当两个相同符号的数相加(或者是相异符号数相减)时,运算结果才有可能溢出
-
常用的溢出检测机制主要有进位判决法和双符号位判决法等
-
双符号位判决法
-
采用两位表示符号位,即00表示正号,11表示负号
-
若运算结果的两个符号分别用S2和S1表示,则判别溢出的逻辑表示式为:VF=S2⊕S1
-
3、浮点运算
(1)加减运算
设有浮点数X=
,Y=
,求X±Y的运算过程如下:
对阶:使两个数的阶码相同。令K=| i - j |,把阶码小的数的尾数右移K位,使其阶码加上K
求尾数和(差)
结果规格化并判溢出:若运算结果所得的尾数不是规格化的数,则需要进行规格化处理。当尾数溢出时,需要调整阶码
舍入处理的方法如下:
截断法:将要保留的数据末位右边的数据全都截去,不管数据是0还是1
末位恒1法:将要保留的末位数据恒置1,不管右移丢掉的数据是0还是1
0舍1入法:舍去的数据为0时,保持末位原始状态。若舍去的数据为1,则将末位加1。这类似于十进制中的四舍五入。但在当数据为0.1111…1,即在尾数全为1的特殊情况下,这种舍入会再次产生溢出。遇到这种情况可用硬件判断,并在舍去1时末位不再加1
溢出判别:以阶码为准。若阶码溢出,则运算结果溢出;若阶码下溢出,则结果为0;否则结果正确无溢出