日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于IEEE 754双精度浮点数(double)

發布時間:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于IEEE 754双精度浮点数(double) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于IEEE 754標準下的浮點數

(全文以64位為例,規定64位中包括1位符號位,11位階碼和52位尾數)

1.符號位

沒什么可說的,一位,分正負罷了。

2.階碼

階碼由于偏移量的存在,其值會被加上1023(在IEEE754中特殊規定的,純粹為了方便計算)。
例如:
如果本來是2的5次方,那么轉換后將會是1028,即(10000000100)2
如果是2的-1次方,轉換后將會是1022,即(01111111110)2。

那么階碼的取值,在0至2047之間。其中,0和2047是特別的,如果是2047,那么無論尾數是多少,這個數都是無窮大,即溢出。而當階碼是0時,將分開另講。

3.尾數

(1)一般情況,也稱規格化情況

在階碼為1至2046時,尾數前有一位隱藏位,默認置1,小數點默認在尾數第一位之前
例如:
尾數為0000…000(52個0),那么實際上表示的數是1.000…000(52個0);
尾數為101010000…0(自行湊52位吧),那么實際上表示的是1.101010000…0。
這么做的原因自然是能多一位,更精確。

至此,可以得知:階碼為1至2046(即不是全0或全1時),一個64位浮點數的值是:
(1.尾數)×2(階碼-1023)(記得看符號位分正負)

(2)特殊情況,非規格化

階碼為0的情況
此時尾數前無隱藏位,小數點默認在尾數第一位與第二位之間
例如:
尾數為100…0(51個0)表示(1.00…0)2(51個0)而不是(1.100…0)2(51個0),不再具有隱藏位。
尾數為00…001(51個0)表示(0.000…0001)2=2-51,小數點后是50個0,而不是(1.00…001)2也不是(0.00…001)2=2-52(不是小數點后51個0)。
至此,可以得知,階碼為全0時,64位浮點數的值是:
(小數點加在一二位之間的尾數)×2-1023

階碼全1的情況
認為此數超出上界,溢出。

4.結論

由上邊的分析可以最終得出:

絕對值最小值:階碼全0,尾數為00…01(51個0)時,對應的值是(0.00…01)2×2-1023(小數點后50個0),即2(-51-1023)=4.94e-324約為5×10-324

絕對值最大值:階碼為11…10,尾數全1時,對應的值是(1.11…1)2×21023(小數點后52個1),即
(2-2-52)×21023=1.7977e+308約為1.8×10308

需要注意的是,若要使用浮點數表示整數,僅能表示到(1.11…1)2×252(小數點后52個1),即
253-1=9007199254740991,約為9×10^15,并不像某些一知半解的人所謂“double根本不能表示任何整數”,也不是任何時候都使用double都可以,不過它至少比int大,但顯然沒有也不應該有long大(畢竟都是64位)。
由于只有尾數擁有精確度,階碼僅能表示數量級,故認為其最小精度為2-52,約為2.22×10-16。(并不是說其表示的數與數之間的間隔是10-16,這太可笑了)個人認為,是在階碼相當的情況下,數與數之間的相對間隔,這種類似的概念。

老生常談:絕對值超出上界上溢,溢出處理報錯;絕對值超出下界下溢,按機器0處理,不報錯。

double擁有0與-0,符號位分別為0和1,其余位全0。編碼上是有區別的,c++中計算1.0/0.0和1.0/-0.0分別得到INFINITY與–INFINITY,或許這就是其根本原因。

參考:

https://www.boatsky.com/blog/26
https://blog.csdn.net/abcdu1/article/details/75095781
(第二篇里推薦的工具很好用,貼過來嘻嘻)
進制轉換工具:
http://tool.oschina.net/hexconvert/
單精度浮點數內存中編碼:
https://www.h-schmidt.net/FloatConverter/IEEE754.html
雙精度浮點數內存中編碼:
http://www.binaryconvert.com/convert_double.html

總結

以上是生活随笔為你收集整理的关于IEEE 754双精度浮点数(double)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。