一、浮点数的组成
先以十进制的浮点数理解以下概念,例地球的质量是5.965*10的24次方千克
基数:以几进制,基数就是几。地球的质量的基数就是10
阶码E:几次方,阶码就是几。地球的质量的阶码就是24
尾数M:小数点之后的数就是尾数。地球的质量的965就是尾数
符号位S:表示正负,地球的质量的5是正5
浮点数就是由这些元素组成,再举一个二进制的例子原码(有符号数)1.1001*2的32次方
基数:2
阶码E:32
尾数M:1001
符号位S:因为是一个有符号数,所以最高位是符号位,小数点前的1代表负号。
二、浮点数规格化
十进制的规格化:
例地球的质量是5.965*10的24次方千克。我们可以写成0.5965*10的25次方千克,也可以写成29.65*10的23千克,但是规定写成5.965*10的24次方千克
二进制的规格化:
对于原码,要求小数点后一位必须是1.
对于补码,如果是正数,小数点后一位是1;对于负数,小数点后一位是0.
三、IEEE754
IEEE754标准规定常用的浮点数有单精度浮点数float和双精度浮点数double。
单精度浮点数总共32位,第一位为符号位,第2位到第9位为阶码(用的移码表示,且此处默认偏置值为127),后面所有都是尾数位(用的原码表示),默认小数点前有个1(阶码不是全0且不是全1).
阶码的运算:当阶码不是全0,且不是全1时,阶码=阶码的真值+127,再配合尾数位和符号位求机器数的真值
当阶码为全0时:尾数也是全0时,机器数的真值就是0;尾数不是全0时,机器数的真值是0.尾数*2的-126次方。
四、浮点数运算
步骤:对阶(小对大),尾数求和,规格化,舍入,溢出判断
五、例题
1.浮点数的机器数是4136 0000H,它的真值是多少?。
转化为二进制:0100 0001 0011 0110 0000 0000 0000 0000
从左往右看,第一个数是0(符号位),代表正数。
再往后数8位:100 0001 0(阶码,不是全0,也不是全1,这个值是130),这是用移码表示的
剩下所有:.011 0110 0000 0000 0000 0000(尾数),这是原码表示的
尾数前默认为1,所以为1.011 0110
阶码是用移码表示的,且偏置值是127,阶码=真值+偏置值:真值=130-127=3
所以这个数是1.0110110*2的3次方=1011.011=11.375
2.设浮点数的阶码和尾数用补码表示,位数分别是5位和7位(双符号),X=2^7*29/32,Y=2^5*5/8,求X+Y。
1.对阶(小对大),5阶对7阶,2^5*5/8=2^7*5/32。
2.尾数相加,29/32+5/32=34/32=01.00010
3.规格化和舍入,因为是补码且是正数(双符号位),所以小数点后为1,小数点前为2个0,所以进行右移成为:00.10001*2的1次方,(01.00010最后一个0舍入)
4.判断溢出:组合上述,0.10001*2的8次方,因为是7位,所以X+Y溢出。也可以通过看尾数相加后小数点前为01或10的都是溢出。