|
本帖最后由 yzwzfyz 于 2017-5-24 11:24 編輯
樓主所提的問(wèn)題,主要是對(duì)浮點(diǎn)數(shù)在計(jì)算機(jī)中長(zhǎng)成什么樣了不清楚。
樓主應(yīng)當(dāng)知道科學(xué)計(jì)數(shù)法(除0之外)的示數(shù)方式:A.B*10^N,如:3.123456*10^8,A=1-9,B、N=任意數(shù)字。
計(jì)算機(jī)里的浮點(diǎn)數(shù)有許多種表示方式,但都是模仿了科學(xué)計(jì)數(shù)法。
現(xiàn)舉其中在單片機(jī)中最常用的一種:
用四個(gè)字節(jié)表示一個(gè)浮點(diǎn)數(shù):X1、X2、X3、X4
X1是指數(shù)相當(dāng)于N,稱“階碼”或指數(shù);
X2X3X4構(gòu)成底數(shù)相當(dāng)于B。
符號(hào):用底數(shù)的最高位來(lái)表示正負(fù)。
X2.7=1表示負(fù)數(shù),X2.7=0表示正數(shù)。
如:(96H、C0H、23H、22H)中的C0H的最高位(C0H=11000000B)是1,所以是負(fù)數(shù)。
而:(96H、20H、23H、22H)中的20H的最高位(20H=00100000B)是0,則表示正數(shù)。
階碼:X1。
底數(shù):X2X3X4的特殊規(guī)定:
無(wú)論X2.7是0是1,都默認(rèn)為是1,也就是X2.7除表示符號(hào)之外,在底數(shù)中恒定認(rèn)為是1。
如:(96H、C0H、23H、22H)中的底數(shù)是:C02322H
而(96H、20H、23H、22H)中的底數(shù)也是:C02322H(最高位20H=00100000B隱含是1,即為10100000B=C0H)
小數(shù)點(diǎn)在何處:階碼的最大值=FFH,最小為00H,就取其中值80H為小數(shù)點(diǎn)的位置,如此浮點(diǎn)數(shù)的值就為:
X2X3X4 * 2^(X1-80H-18H),注:18H=24是因?yàn)榈讛?shù)X2X3X4有24位。
浮點(diǎn)數(shù)舉例:80000000H
底數(shù):000000H,符號(hào)=0,正數(shù),恢復(fù)隱含1之后為:800000H
階碼:80H
浮點(diǎn)數(shù)值=800000H * 2^(80H-80H-18H)=0.5
浮點(diǎn)數(shù)舉例:80800000H
底數(shù):800000H,符號(hào)=1,負(fù)數(shù),恢復(fù)隱含1之后為:800000H
階碼:80H
浮點(diǎn)數(shù)值=-800000H * 2^(80H-80H-18H)=-0.5
浮點(diǎn)數(shù)舉例:9803D600H
底數(shù):03D600H,符號(hào)=0,正數(shù),恢復(fù)隱含1之后為:83D600H
階碼:98H
浮點(diǎn)數(shù)值=83D600H * 2^(98H-80H-18H)=8640000
|
|