91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中怎么存儲浮點數

發布時間:2021-07-02 16:26:53 來源:億速云 閱讀:296 作者:Leah 欄目:互聯網科技

這篇文章給大家介紹C語言中怎么存儲浮點數,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

C語言中,有兩種類型的浮點數:32位的float和64位的double,而在計算機中存儲的是用二進制的科學計數法(即基數為2)表示的值

例如100=1100100B=1.1001B*26,123.456=1111011.0111010010111100011010100111111011111001110111B=1.1110110111010010111100011010100111111011111001110111B*26

C語言中怎么存儲浮點數

既然基數固定為2,尾數的整數部分固定為1,那存儲時就可以省略掉它倆了,只需要存儲另外三個信息:  正負符號+指數+尾數的小數部分

float:符號占1位,指數占8位,尾數小數占23位;

double:符號占1位,指數占11位,尾數小數占52位

不過指數也有正負,因此存儲時加個偏移來表示。  float用8位表示指數,偏移就是127;  double用的是11位,那偏移就是1023
看看123.456用float是如何存儲的:  因為是正數,符號位用0;指數是6,加上偏移127后,133=10000101B;尾數的小數部分的前23位是  1110110111010010111100  1  (第24位是1,因此需要進位),拼接成32位數就是0  10000101  11101101110100101111001  B=1123477881

C語言中怎么存儲浮點數

再看一個純小數的存儲,例如0.00123456,這次倒著推導一下

計算機中存儲的是983683318,轉換為二進制就是0  01110101  01000011101000011110110  B。其中第一個0表示正值;挨著的8位01110101B=117,表示指數為(117-127)=-10;最后的23位表示尾數的小數部分,前面加上整數部分的1,再左移23位之后就是1  01000011101000011110110  B=10604790。那么原值就是10604790右移23位,再左移-10位,即10604790右移33位。而233=8589934592。所以原值就是10604790/8589934592=  0.0012345600  407571,可見前10位小數都是正確的,精度還可以

C語言中怎么存儲浮點數

最后試個double的123.456

C語言中怎么存儲浮點數

二進制就是:0  10000000101  11101101110100101111,00011010100111111011111001110111  B。其中第一個0表示正值;指數位是10000000101B=1029,表示指數為(1029-1023)=6;最后是52位尾數,前面加上整數部分的1,再左移52位之后,1  1110110111010010111100011010100111111011111001110111  B=8687443681197687。因此,原值就是8687443681197687右移52位,再左移6位,即右移46位,而246=70368744177664。

8687443681197687/70368744177664=123.456

C語言中怎么存儲浮點數

關于C語言中怎么存儲浮點數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永城市| 庆元县| 德令哈市| 和政县| 石狮市| 昌宁县| 容城县| 文水县| 大厂| 昌平区| 西乡县| 安新县| 通海县| 华池县| 龙里县| 弋阳县| 左云县| 田东县| 尉氏县| 洛扎县| 莆田市| 普定县| 桃园县| 汕头市| 皋兰县| 项城市| 濮阳县| 大英县| 报价| 崇明县| 建瓯市| 栖霞市| 广州市| 冷水江市| 佛山市| 肇州县| 瓦房店市| 嘉义市| 连州市| 龙游县| 长子县|