kongdezheng
級(jí)別: *
![]() |
新手請(qǐng)教: 浮點(diǎn)四則運(yùn)算時(shí)怎么回事? 在仿真軟件用 DEDIV K63 K10 D0 運(yùn)算結(jié)果D0的數(shù)據(jù)為6.3 此時(shí)D1的數(shù)據(jù)為16585 我想知道D1的數(shù)據(jù)是怎么得到的? 編程手冊(cè)上面沒(méi)有浮點(diǎn)解釋呀 請(qǐng)前輩師傅們幫忙解答一下 萬(wàn)分感激 謝謝 |
---|---|
|
sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主
![]() ![]() ![]() ![]() |
在樓上的基礎(chǔ)上提醒你一下: 首先要看看浮點(diǎn)數(shù)在PLC是如何保存的;將浮點(diǎn)數(shù)拆解成10進(jìn)制數(shù),然后看看是否能夠得到你看到的這個(gè)結(jié)果~ |
---|---|
|
sjm213
有小知識(shí),無(wú)大學(xué)問(wèn)。
級(jí)別: 論壇版主
![]() ![]() ![]() ![]() |
浮點(diǎn)的運(yùn)算比較麻煩,你可以“百度”或者“谷歌”一下。 它的格式是:【符號(hào)位】(1位)+【指數(shù)位】(8位)+【尾數(shù)位】(23位)共計(jì)組成32位的浮點(diǎn)數(shù)。 符號(hào)位用0、1表示正負(fù); 指數(shù)位是將十進(jìn)制轉(zhuǎn)化為二進(jìn)制后,再用科學(xué)法表示(將小數(shù)點(diǎn)移位到首位為1處),看指數(shù)值為多少,再加上127得到指數(shù)位的數(shù)。 尾數(shù)位則是將二進(jìn)制的首個(gè)1去掉之后的數(shù)值。 對(duì)于K6.3: 符號(hào)位為0(正數(shù)); 轉(zhuǎn)化為二進(jìn)制為110.01001100110011001100……即1.1001001100110011001……×22 那么:指數(shù)位就是2+127=129轉(zhuǎn)為2進(jìn)制為10000001;尾數(shù)位就是1001001100110011001…… 所以它的浮點(diǎn)數(shù)在CPU中存儲(chǔ)為:0100 0000 1100 1001 1001 1001 1001 1001 三菱的數(shù)據(jù)寄存器儲(chǔ)存32位數(shù)據(jù)是按照【D1 D0】這樣的結(jié)構(gòu)來(lái)保存的,也就是D1存儲(chǔ)前16位,D0存儲(chǔ)后16位; 所以D1中的數(shù)據(jù)是0100 0000 1100 1001 -------------------現(xiàn)在把它轉(zhuǎn)為10進(jìn)制,就得到了16585。 |
---|---|
|