浮點數(shù)的存儲格式和浮點數(shù)轉(zhuǎn)換
發(fā)布于2022-12-21 14:48
27
2
標簽:浮點數(shù)
①浮點數(shù)的存儲格式
浮點數(shù)(實數(shù))在S7-200中的存儲為雙字長數(shù)據(jù),數(shù)據(jù)由1位符號位S(bit31)、8位指數(shù)位E(bit30~bit23)、23位尾數(shù)位F(bit22~bit0)組成。
數(shù)據(jù)以二進制的格式保存,并通過一定的規(guī)定進行折算,具體情況如圖3-23所示。
符號位S:符號位為1位,可以是0或1,0為正數(shù),1為負數(shù)。
指數(shù)位E:使用8位二進制表示,可以表示的十進制數(shù)據(jù)范圍為0~255。其中當0
尾數(shù)位F:使用23位二進制表示,可以表示的十進制數(shù)據(jù)范圍為0~7FFFF。當F=0 且E=0時作為0處理;當F=0且E=255時作為無窮大處理。
數(shù)據(jù)折算按照如下公式進行:Z=(-1)S2E-127(1 0.F)。式中,S為符號位s值;E為指數(shù)值;F為小數(shù)位值。
在非標準數(shù)據(jù)中,幾種常用的情況可以表示特殊的數(shù)據(jù),如:E=0,F(xiàn)=0,則作為“0”處理;
E=255,F(xiàn)=0,則根據(jù)符號位的情況,分別作"-co"或" co"處理;但當E=0或E=255時,若F≠0,則視為非浮點數(shù)。
②浮點數(shù)轉(zhuǎn)換實例
【例3-18】確定十進制數(shù) 10在S7-200中的存儲格式。確定步驟如下。
a.數(shù)據(jù)轉(zhuǎn)換。從計算式中可以看出,為了確定存儲格式,必須首先將數(shù)據(jù)轉(zhuǎn)化為以2 的n次方表示的浮點形式,而且小數(shù)點前只能1位,其值必須為1。
即:10=1.25×23。b.符號位。S=0(正數(shù))。
c.指數(shù)。根據(jù)計算公式,可以確定指數(shù)位E-127=3,所以E=130,對應的二進制值為10000010。
d.尾數(shù)。尾數(shù)為轉(zhuǎn)化后數(shù)據(jù)的小數(shù)點后面的部分,本例中為0.25,尾數(shù)折算為2的n 次方后得0.25=2-2,對應的二進制值為010 000000 0000 000000。
將以上結(jié)果按照規(guī)定的位置組成32位二進制數(shù)后,最終得到十進制數(shù) 10的浮點保存格式為0100 00010010 0000 0000 0000 0000 0000(即十六進制值41 20 0000)。
【例3-19】 確定十進制數(shù) 3.141493在S7-200中的存儲格式。根據(jù)上例同樣步驟,得:
a.數(shù)據(jù)轉(zhuǎn)換。3.141493=1.5707965×21。b.符號位。S=0(正數(shù))。
c.指數(shù)。確定指數(shù)位E-127=1,所以E=128,對應的二進制值為1000 0000。d.尾數(shù)。0.5707965=2-1 2-4 2-7 2-12 2-1 2-1 2-15 2-16 2-17 2-1° 2-2° 2-21,對應的二進制值為10010010000000111101100。
將以上結(jié)果按照規(guī)定的位置組成32位二進制數(shù)后,最終得到十進制數(shù)3.141493的浮點保存格式為0100 000001001001 0000 1111101 1100(即十六進制值40 49 0F DC)。
【例3-20】已知某浮點數(shù)在S7-200中的存儲格式為:3FB504F7,試確定其實際值。根據(jù)十六進制格式,可以得到該數(shù)的二進制格式為001111101101010100000100100111 0111,從而可得到:
a.符號位。S=0。
b.指數(shù)。E=(0111111)2=127。
c.尾數(shù)。(01101010000010011111011)2=2-2 2-2 2-3 2-2-2 2-16 2-17 2-18 2-19 2-2 2-2 2-23=0.414214015。
得:Z=(一1)52E-127(1 0.F)=(一1)°×2127-127(1 0.414214015)=1.414214015