RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [C&C++] [問題]關於c的浮點數   字型大小:||| 
zxvf
驢有所悟
等級: 3等級: 3


 . 積分: 10
 . 文章: 10
 . 收花: 93 支
 . 送花: 2 支
 . 比例: 0.02
 . 在線: 143 小時
 . 瀏覽: 300 頁
 . 註冊: 6981
 . 失蹤: 459
#1 : 2011-4-14 07:19 PM     全部回覆 引言回覆

關於精準度, 可由「定點數」應用在小數表示法比較有感覺

舉 int16 的例子來說,
一般認定的範圍是  -32178 (0x8000) ~ 32767 (0x7FFF)
但在意義上, 可以解釋成 -1 ~ +1 , 只要把小數點放在第 15 個 bits, 邏輯上就是 right shift 15 bits
而通常這個變數可能會寫成 Q15 (表示小數點的位置)

依照不同的應用, 你可以調整小數點的位置, 而得到不同數值範圍
但實務上, 小數點的位置在設計程式的時候就決定了, 就不會換了
要換小數點的位置, 當然也可以, 不過就要一些技巧...

而浮點數會記錄小數點的位置, 可以動態調整, 所以表示範圍是動態的
專用名詞是 dynamic range
由於浮點數要盡可能表示有效位數, 所以正規化之後, 第一個 bit 必須為 1
也因為第一個 bit 為 1, 就可以省去

回到精準度的部分, 不管浮點數 or 定點數
若有一個值是
0.11001b (二進位)
則其 10 進位的值是
0 +
1 x 1/2 +
1 x 1/4 +
0 x 1/8 +
0 x 1/16 +
1 x 1/32
= 0.78125

所以, 要以 10 進位來說精準度有幾個位數, 個人覺得很難理解
以 2 進位來說, 就很容易... 就看有幾個 bits 了



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-11-22 12:22 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.017793 second(s), 7 queries , Qzip disabled