單片機一般浮點數均采用士MxC的形式來表示,其中M稱為尾數。它一般取為小數0≤M
浮點數也有各種各樣表示有符號數的方法,其中數的符號常和尾數放在一起,即把士M作為一個有符號的小數,它可以采用原碼、補碼等各種表示方法,而階碼可采用各種不同的長度,并且數的符號也可以放于各種不同的地方。所以浮點數有很多的表示方法。
四字節(jié)浮點數表示法是微機中常用的一種表示方式。浮點數總長度是32位,其中階碼8位,尾數是24位。階碼和尾數均為2的補碼形式。階碼的最大值位+127,最小值-128,這樣四字節(jié)浮點數能表示的最大值近似于l×2(的127次方)=l70×l0(的38次方),能表示的最小值近似為0.5×2(的-128次方)=1.47×10(的-39次方),這時該范圍內的數具有同樣的精度。
四字節(jié)的浮點數精度較高,接近7位十進制數,但是由于字節(jié)較多,運算速度較慢,往往不能滿足實時控制和測量的需要,并且實際使用時所需的精度一般不要求這么高,三字節(jié)浮點數就滿足了這個要求,精度較低,但運算速度較高。浮點數總長為24位,其中階碼為7位,數符在階碼所在字節(jié)的最高位,尾數為16位,這種表示法運算速度較快需要的存儲容量較小,并且數的范圍和精度能滿足大多數應用場合的需要。下面的程序基本都采用這種表示方法。
規(guī)格化浮點數,在實際應用中,需要有一個程序來完成把一個非規(guī)格化數變規(guī)格化數的操作。在進行規(guī)格化操作時,對原碼表示的數,一般是先判斷尾數的最高位數值位是0還是1。如果是0則把尾數左移l位,階碼減1再循環(huán)判斷,如果是1,則結束操作。由于零無法規(guī)格化,一旦尾數為0,則把階碼置為最小值。如果在規(guī)格化中,階碼減1變成最小值時,不能再繼續(xù)進行規(guī)格化操作,否則發(fā)生階碼下溢出,一般稱之為左規(guī)格化操作。