定点数和浮点数
定点数
小数位固定不变的数叫做定点数
定点数有三种类型
(1)无符号定点整数(Unsigned fixed point integer)
定义:无符号定点整数没有符号位,所以它的全部数位都用来表示数字,且它的小数点隐含在最低位后,在数码序列中并不存在。
对于某种数的表示方式,我们关心两点:
- 1.表示范围:这种方法表示数的大小(正负方向),无符号定点整数范围:0~2n-1
- 2.分辨率:精度,1(即最小非零正数)
代码序列:XnXn-1...X1X0表示无符号定点整数,则有n+1位正整数
典型值 | 真值 | 代码序列 |
最大正整数 | 2n+1-1 | 11...11 |
最小非零正数 | 1 | 00...01 |
(2)带符号定点整数
定义;带符号定点整数是纯整数,小数点在最低位之后,最高位为符号位。常用补码表示,也用原码表示。
代码序列:XnXn-1...X1X0表示带符号定点整数,Xn是符号位
原码定点整数表示范围:-(2n-1)~(2n-1)
补码定点整数表示范围:-2n~(2n-1)
源码,补码定点整数分辨率:1
(3)带符号定点小数
定义:带符号定点小数是纯小数,
代码序列:X0.X1...Xn
最高位X0是符号位,小数点位置在符号位之后,X1...Xn是数值的有效部分,常称尾数,X1称为最高数位或最高有效位
原码定点小数表示范围:-(1-2-n)~(1-2-n)
补码定点小数表示范围:-1~(1-2-n)
分辨率:2-n
定点小数的位置是固定的,不需要我们专门设置,在实际中并不存在。
浮点数
定义:是一种小数点位置不固定可随需要浮动的数
(1)浮点数表示
N=REx M
Ef | E1 | ... | Em | Mf | M1 | M2 | ... | Mn |
阶码E,Ef为阶符
尾数M,Mf为数符
对尾数的规格化要求
若以R=2为基底
浮点数用原码表示,则需要:1/2 <= |M| < 1,此时最高有效位始终为1;
浮点数用补码表示,则需要:-1<= M < -1/2或1/2<=M<1,前者最高有效位为1,后者为0
对于正数,规格化特征是M1=1
(2)移码(增码)
移码的数值表示就是补码的符号位变反了。
例题:某浮点数如上面的浮点数的表示,字长32位阶码8位,含1位阶符,补码表示以2为;尾数24位,含一位数符,补码表示,规格化。若浮点数代码为(A3680000)16,求真值N
(A3680000)16=(10100011,01101000...0)2
阶码长度为8位,4位二进制表示1位十六进制,总共两位十六进制,因此A3表示阶码,第一位表示符号位,1为负数
因为阶码是补码表示,所以我们需要转换为原码
E=-(1011101)2 =-(93)10
M=(0.1101000..0)2=(0.8125)10
N=2-93x0.8125
将-(1011.11010...0)2写成浮点数代码F
N=-(1011.11010...0)2
=-(0.101111010...0)2x24
E=(4)10=(00000100)2
M补=(1.010000110...0)2
所以F=(00000100,1010000110...0)2=(04A18000)16
(5)IEEE754标准浮点格式
规格化要求:0<=|M|<1
例题:将十进制数20.59375转换成符合IEEE754格式的32位短浮点数,写出其二进制代码,并转换成十六进制代码
1.分别转换整数部分和小数部分为二进制20.59375=10100.10011
2.移动小数,使其在第一位与第二位之间
10100.10011=1.010010011x24
得到阶码:E=4
3.尾数符号位为正数,即0 阶码表示成移码:E=4+127=131=1000 0011
尾数M=0 1001 0011
4.所以F=(0100 0001 1010 0100 1100 0000 0000 0000 )2
=(41A4C000)16