51单片机浮点数运算原理
扫描二维码
随时随地手机看文章
单片机一般浮点数均采用士MxC的形式来表示,其中M称为尾数。它一般取为小数0≤M
浮点数也有各种各样表示有符号数的方法,其中数的符号常和尾数放在一起,即把士M作为一个有符号的小数,它可以采用原码、补码等各种表示方法,而阶码可采用各种不同的长度,并且数的符号也可以放于各种不同的地方。所以浮点数有很多的表示方法。
四字节浮点数表示法是微机中常用的一种表示方式。浮点数总长度是32位,其中阶码8位,尾数是24位。阶码和尾数均为2的补码形式。阶码的最大值位+127,最小值-128,这样四字节浮点数能表示的最大值近似于l×2(的127次方)=l70×l0(的38次方),能表示的最小值近似为0.5×2(的-128次方)=1.47×10(的-39次方),这时该范围内的数具有同样的精度。
四字节的浮点数精度较高,接近7位十进制数,但是由于字节较多,运算速度较慢,往往不能满足实时控制和测量的需要,并且实际使用时所需的精度一般不要求这么高,三字节浮点数就满足了这个要求,精度较低,但运算速度较高。浮点数总长为24位,其中阶码为7位,数符在阶码所在字节的最高位,尾数为16位,这种表示法运算速度较快需要的存储容量较小,并且数的范围和精度能满足大多数应用场合的需要。下面的程序基本都采用这种表示方法。
规格化浮点数,在实际应用中,需要有一个程序来完成把一个非规格化数变规格化数的操作。在进行规格化操作时,对原码表示的数,一般是先判断尾数的最高位数值位是0还是1。如果是0则把尾数左移l位,阶码减1再循环判断,如果是1,则结束操作。由于零无法规格化,一旦尾数为0,则把阶码置为最小值。如果在规格化中,阶码减1变成最小值时,不能再继续进行规格化操作,否则发生阶码下溢出,一般称之为左规格化操作。