国产一级a毛一级a看免费视频,久久久久久国产一级AV片,免费一级做a爰片久久毛片潮,国产精品女人精品久久久天天,99久久久无码国产精品免费了

產(chǎn)品推薦:氣相|液相|光譜|質(zhì)譜|電化學(xué)|元素分析|水分測定儀|樣品前處理|試驗機|培養(yǎng)箱


化工儀器網(wǎng)>技術(shù)中心>其他文章>正文

歡迎聯(lián)系我

有什么可以幫您? 在線咨詢

西門子代理|一級總代理

來源:潯之漫智控技術(shù)(上海)有限公司   2022年12月09日 20:53  

RND指令執(zhí)行出錯的原因分析

網(wǎng)友ktissot在用下面3條指令將浮點數(shù)轉(zhuǎn)換為雙整數(shù)時,發(fā)現(xiàn)了一個神秘的現(xiàn)象。

L  MD0
RND     //浮點數(shù)四舍五入
T   MD4
我們知道,最大的正的雙整數(shù)是2147483647,大于這個數(shù),RND指令轉(zhuǎn)換會出錯。
但是他的帖子說實際上能轉(zhuǎn)換的最大的浮點數(shù)不是2147483647.0,而是2147483583.0。
這一段本應(yīng)正常轉(zhuǎn)換的區(qū)間轉(zhuǎn)換會出錯,為什么轉(zhuǎn)換出錯的分界點是2147483583.0,這里面隱藏了什么秘密?
這件事引起我極大的興趣,為此我用仿真做了大量的實驗,下面是我做實驗發(fā)現(xiàn)的更多的現(xiàn)象:
1.轉(zhuǎn)換出錯的情況
RND指令的幫助中說:“如果超出允許范圍,則狀態(tài)位OV和OS被置位為1。結(jié)果存在累加器1中”。“出現(xiàn)錯誤(使用了不能表示為32位整數(shù)的NaN或浮點數(shù))時不執(zhí)行轉(zhuǎn)換并顯示溢出。”。
下圖用程序狀態(tài)監(jiān)控狀態(tài)字STATUS WORD。
大于2147483647.0時轉(zhuǎn)換出錯。
大于2147483584.0到2147483647.0這一段照理說在應(yīng)該在能轉(zhuǎn)換的范圍里,但是轉(zhuǎn)換也會出錯,狀態(tài)字的OV和OS位(第4、5位)被置位為1(見下圖)。MD4中是沒有轉(zhuǎn)換的浮點數(shù),而不是雙整數(shù)。轉(zhuǎn)換出錯的分界點是2147483584.0。

2.轉(zhuǎn)換成功的情況

小于16777215.0左右轉(zhuǎn)換結(jié)果正確。轉(zhuǎn)換成功時OV和OS為0。

小于2147483584.0到16777215.0這一段可以轉(zhuǎn)換,但是轉(zhuǎn)換有誤差。

接近2147483584.0時,最大誤差為64。

大于2147483456.0 ~ 2147483584.0時(區(qū)間范圍為128.0),轉(zhuǎn)換后得到的雙整數(shù)均為2147483520(16#7FFF FF80,見下圖)。轉(zhuǎn)換結(jié)果2147483520是區(qū)間中點的值,(2147483456 + 2147483584)/2= 2147483520。

大于2147483328.0 ~ 2147483456.0時,轉(zhuǎn)換后得到的雙整數(shù)均為2147483392(16#7FFF FF00)。

大于2147483200.0 ~ 2147483328.0時,轉(zhuǎn)換后得到的雙整數(shù)均為2147483264(16#7FFF FE80)。

經(jīng)過分析,我已經(jīng)找到了上述現(xiàn)象的原因,結(jié)果暫布,希望有興趣的網(wǎng)友一起來分析一下,共享解決問題的快樂。

3.轉(zhuǎn)換結(jié)果分析

大于2147483456.0 ~ 2147483584.0時轉(zhuǎn)換后得到2147483520(16#7FFF FF80)。

大于2147483328.0 ~ 2147483456.0時轉(zhuǎn)換后得到2147483392(16#7FFF FF00)。

大于2147483200.0 ~ 2147483328.0時轉(zhuǎn)換后得到2147483264(16#7FFF FE80)。

上述3個區(qū)間內(nèi)部的間隔為128.0,轉(zhuǎn)換結(jié)果為區(qū)間的中點(2147483456 + 2147483584)/2= 2147483520。

所以這種轉(zhuǎn)換并不精確,最大誤差為128/2=64。


浮點數(shù)轉(zhuǎn)換為雙整數(shù)的轉(zhuǎn)換誤差的根本原因是32位浮點數(shù)和32位雙整數(shù)的有效位數(shù)的差異造成的。

浮點數(shù)由一位符號位、8位指數(shù)和尾數(shù)的小數(shù)部分(23位)組成。尾數(shù)的位數(shù)決定了浮點數(shù)的精度。尾數(shù)的整數(shù)部分為1,小數(shù)部分為23位,所以尾數(shù)的有效數(shù)字為24位。

雙整數(shù)除去一位符號位,其有效位數(shù)為31位,因此浮點數(shù)的有效位數(shù)比雙整數(shù)少7位。

2147483456.0 ~ 2147483584.0相差128.0,它們對應(yīng)的整數(shù)為31位有效數(shù)字,這些浮點數(shù)輸入plc后,因為浮點數(shù)的有效位數(shù)只有24位,它們的尾數(shù)相同,對應(yīng)的十六進制表示的浮點數(shù)均為16#4EFF FFFF,或2.17484e+009(注意有效尾數(shù)為十進制7位,而不是對應(yīng)的整數(shù)的10位)。所以轉(zhuǎn)換為雙整數(shù)后均為2147483520。

ktissot網(wǎng)友說:“這就像看一片湖水一樣,你可以看到水和浪花,但是絕對看不到水分子。”由于有效位數(shù)較小,浮點數(shù)不能分辨“水分子”2147483457.0 ~ 2147483584.0,我們只能看到“浪花”2147483520(16#7FFF FF80)。

如果浮點數(shù)較小,例如小于16777215(16#FF FFFF),整數(shù)部分只有24位,轉(zhuǎn)換后就沒有上述的誤差了。在此基礎(chǔ)上增大,整數(shù)部分的位數(shù)越大,誤差越大。

因為有效位數(shù)相差7位,在接近雙整數(shù)最大值的區(qū)段,浮點數(shù)的尾數(shù)相差一個數(shù)時,轉(zhuǎn)換為雙整數(shù)后,相差128。2的7次方等于128。


4.轉(zhuǎn)換出錯的原因分析

為什么大于2147483584.0的數(shù)不能正確地轉(zhuǎn)換呢?請注意小于2147483648.0到大于2147483584.0這段范圍剛好是64.0(128.0的一半)。RND指令在轉(zhuǎn)換時將這段范圍的尾數(shù)四舍五入后,尾數(shù)的位加1,相當(dāng)于轉(zhuǎn)換后的整數(shù)加128(16#80),由上述的16#7FFF FF80(2147483520)加16#80后變?yōu)?6#8000 0000,超出了雙整數(shù)整數(shù)的允許范圍,產(chǎn)生了溢出,所以轉(zhuǎn)換出錯。


免責(zé)聲明

  • 凡本網(wǎng)注明“來源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
  • 本網(wǎng)轉(zhuǎn)載并注明自其他來源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品第一來源,并自負(fù)版權(quán)等法律責(zé)任。
  • 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
企業(yè)未開通此功能
詳詢客服 : 0571-87858618
主站蜘蛛池模板: 法库县| 阜城县| 闽清县| 巴林左旗| 清镇市| 邹城市| 昌平区| 彰化县| 丽水市| 贵德县| 罗平县| 阳东县| 通城县| 建湖县| 乐昌市| 梁河县| 阳东县| 河源市| 循化| 临夏市| 永泰县| 中山市| 临高县| 平罗县| 岑巩县| 达拉特旗| 印江| 酒泉市| 赫章县| 东乡族自治县| 广汉市| 华池县| 宝清县| 合川市| 磐石市| 兴城市| 汉沽区| 扶余县| 甘孜县| 邛崃市| 瑞丽市|