浮點數(shù)的秘密

        1前言當(dāng)我們學(xué)習(xí)C語言時,我們通常認為浮點數(shù)和小數(shù)是等效的,沒有嚴(yán)格的區(qū)分它們的概念。

        這不會影響我們的學(xué)習(xí),因為浮點數(shù)和小數(shù)是綁定在一起的。

        ,只有小數(shù)點以浮點格式存儲。

        實際上,整數(shù)和十進制都可以以定點格式存儲,或者都可以以浮點格式存儲,但實際情況是C語言使用定點格式存儲整數(shù),而浮點格式存儲小數(shù)位,在“數(shù)字范圍”內(nèi)尋求兩個重要指標(biāo)“”之間平衡的結(jié)果。

        和“數(shù)值精度”。

        2什么是浮點數(shù)?浮點數(shù)僅表示實數(shù)。

        浮點數(shù)在計算機中用于近似任何實數(shù)。

        具體來說,通過將整數(shù)或定點數(shù)(即尾數(shù))乘以某個基數(shù)(在計算機中通常為2)的整數(shù)次冪來獲得此實數(shù)。

        這種表示方法類似于以10為基礎(chǔ)的科學(xué)表示法。

        3將浮點數(shù)存儲在內(nèi)存中首先,很明顯,整數(shù),浮點或字符等數(shù)據(jù)類型以二進制模式存儲在計算機的底部。

        浮點數(shù)在內(nèi)存中的存儲方式不同于整數(shù),因為整數(shù)可以一一對應(yīng)地轉(zhuǎn)換為二進制數(shù)據(jù)。

        浮點數(shù)的存儲由符號+指數(shù)+分?jǐn)?shù)組成。

        類型符號位指數(shù)尾數(shù)浮點數(shù)1位(No.31)8位(No.23至30)23位(No.0至22)雙精度1位(No.63)11位(No.52至62)52位(第0?51位)Int和float也占用了四個字節(jié)的內(nèi)存,但是float可以表示的最大值比int大得多。

        根本原因是浮點數(shù)以指數(shù)形式存儲在內(nèi)存中。

        將浮點數(shù)轉(zhuǎn)換為內(nèi)存的步驟分為以下三個步驟:將浮點數(shù)轉(zhuǎn)換為二進制數(shù),以科學(xué)計數(shù)法表示二進制浮點數(shù),并計算指數(shù)偏移后的值。

        對于第三點:在計算指數(shù)時需要添加偏移量。

        (我將在后面介紹為什么使用偏移量),并且偏移量的值與浮點數(shù)的類型有關(guān)(浮點偏移量值為127,雙偏移量值為1023)。

        例如,對于指數(shù)6,float和double類型的偏移量值為:float:127 + 6 = 133 double:1023 + 6 = 1029 4浮點數(shù)19.625如何與float一起存儲的示例:將浮點數(shù)轉(zhuǎn)換為二進制:10011.101(將19.625的整數(shù)部分除以2得到余數(shù),將小數(shù)部分除以2進行舍入);使用科學(xué)計數(shù)法表示二進制浮點數(shù):1.0011101 * 2 ^ 4;計算指數(shù)偏移的值:127 + 4 = 131(10000011);馬賽克總結(jié)起來,內(nèi)存中的float類型19.625的值為:0-10000011-001 1101 0000 0000 00000000。

        5 float和double的范圍和精度float和double的范圍由指數(shù)中的位數(shù)確定。

        (因為表示形式為1.x * 2 ^ Y,所以忽略了1.x的影響,并且指數(shù)直接用于表示浮點數(shù)的范圍)float:1位(符號位)8位(指數(shù)位)23bits(尾數(shù)位)double:1bit(符號位)11bits(指數(shù)位)52bits(尾數(shù)位)因此float的指數(shù)范圍是-127?+ 128,double的指數(shù)范圍是-1023 ?+ 1024,并且指數(shù)位以代碼形式補充。

        負指數(shù)確定浮點數(shù)可以表示的具有最小絕對值的非零數(shù)。

        正指數(shù)決定了浮點數(shù)可以表示的絕對值最大的數(shù),也決定了浮點數(shù)的取值范圍。

        浮動范圍是-2 ^ 128?+ 2 ^ 128,即-3.40E + 38?+ 3.40E + 38; double的范圍是-2 ^ 1024?+ 2 ^ 1024,即-1.79E + 308?+ 1.79E + 308。

        精度浮點數(shù)和雙精度數(shù)的精度取決于尾數(shù)的位數(shù)。

        尾數(shù)表示小數(shù)點后的有效位數(shù)越多,精度越高。

        根據(jù)科學(xué)記數(shù)法將浮點數(shù)存儲在存儲器中,并且整數(shù)部分始終是隱式的“ 1”。

        由于它是常數(shù),因此不會影響精度。

        float:2 ^ 23 = 8388608,共7位數(shù)字,表示最多可以有7位有效數(shù)字,但絕對可以保證6位數(shù)字,即float的精度為6?7位有效數(shù)字; double:2 ^ 52 = 4503599627370496,總共16位數(shù)字。

        同樣,double的精度為15-16位。

        6解剖:為什么要使用偏移量方法來計算索引?如果

        產(chǎn)品知識/行業(yè)、品牌資訊

        行業(yè)、品牌資訊


        主站蜘蛛池模板: 成人国产一区二区三区| 亚洲日韩国产欧美一区二区三区| 国产在线一区视频| 国产一区在线播放| 无码人妻精品一区二| 国产午夜精品一区二区三区小说| 日本道免费精品一区二区| 水蜜桃av无码一区二区| 国产成人午夜精品一区二区三区| 一区二区福利视频| 无码国产精品一区二区免费16| 亚洲综合在线一区二区三区| 色视频综合无码一区二区三区| 人妻少妇AV无码一区二区| 波多野结衣一区二区三区| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久久久人妻一区精品性色av| 中文字幕精品一区二区| 老湿机一区午夜精品免费福利| 波多野结衣免费一区视频| 无码日韩人妻av一区免费| 中文字幕一区在线| 久久精品国内一区二区三区| 久久精品一区二区三区中文字幕| 精品欧洲av无码一区二区14| 色一乱一伦一区一直爽| 日韩av无码一区二区三区| 国产一区二区三区视频在线观看| 久久婷婷色一区二区三区| 国产精品视频无圣光一区| 国产亚洲一区二区在线观看| 色天使亚洲综合一区二区| 久久精品岛国av一区二区无码| 国产成人一区二区三区电影网站| 日本高清不卡一区| 国产91精品一区二区麻豆亚洲| 精品国产一区二区三区AV| 亚洲一区二区三区日本久久九 | 白丝爆浆18禁一区二区三区 | 久久精品国产第一区二区三区 | 国产一区二区三区久久|