當前位置:首頁 » 存儲配置 » 浮點數存儲

浮點數存儲

發布時間: 2022-01-08 10:58:21

A. 浮點數 在計算機內的存儲形式

浮點數不難,但是要想記熟還真有點不容易,多琢磨琢磨。

一般情況下,浮點數的表示有一下幾個要點:

1、要規格化(讓浮點數表示結果唯一),因為100=10^2 = 0.1 * 10^3, 所以第一步要統一地規格化,確定「階數」和「尾數」(尾數在0.5-1之間,也就是二進制的0.1-1.0之間)

2、「階碼」一般用「移碼」表示法,而「尾數」一般用「原碼/補碼表示法,「數符」表示浮點數的正副號

3、浮點數的形式: 「符號位」【應該就是『數符』】+「階碼」+「尾數「
--浮點數的表示按照不同地標准,表示方法不同,你的原問題沒講清楚用什麼格式表示,我就用最常用地格式來理解了
------------------
其實就以上兩點,計算機中「『帯符號數』的表示」有四種:原碼、補碼、反碼、移碼,這些都是基礎知識,可以自己去看一下這四種表示方法,就自然明白「階符、數符」這些相當於「符號位」的作用了。

先簡單講一下吧,你再結合詳細資料看吧:【設所表示的都是定點純小數】
(小數點前面可以看成是「符號位」,也就對應原來地「階符」和「數符」)
原碼:0.11表示0.75(2^-1 + 2 ^-2), 1.11表示 『-0.75』(前面的1相當於符號位,表示這個數是負數,也就是說「符號位是0」表示正數,1表示負數)

補碼:最普遍地就是補碼了 0.11表示0.75, 1.11表示『-0.25』(也是「0」為正數,1為負數。和原碼地規律一樣)

反碼,最簡單了:正數不變,負數對每一位『取反』即可,0.11=0.75,1.10=-0.25(即0.01地相反數)
-------------以上三種表示方法,對正數的情況都不做處理,但是移碼表示法要對正數做處理。

移碼:1.01=0.25,而0.01=-0.75
。移碼復雜一點,他的表示方法是: 移碼= 2^階碼位數 + 真值(真值:指原來那個『帯符號數』,注意要把把正副號帶入計算)

-----------------------------------
N=-0.110101x2^100: 階數是「正100」,尾數是「負0.110101」,所以整個浮點數是個負數,所以第一位是「1」【第一個符號位-「數符」表示『尾數的正負號』】
階碼是「10 0100」【移碼表示法,最高位是「符號位」】

所以,應該表示為: 1(符號位) 100100(階碼的移碼表示) 11010100【尾數和符號位結合起來,用的是原碼表示法】

B. 請問浮點型數據在計算機是怎麼存儲的

對於浮點類型的數據採用單精度類型(float)和雙精度類型(double)來存儲,float數據佔用32bit,double數據佔用64bit。

無論是單精度還是雙精度在存儲中都分為三個部分:

1、符號位(Sign) : 0代表正,1代表為負。

2、指數位(Exponent):用於存儲科學計數法中的指數數據,並且採用移位存儲。

3、尾數部分(Mantissa):尾數部分。

(2)浮點數存儲擴展閱讀

實型變數分為兩類:單精度型和雙精度型,

其類型說明符為float 單精度說明符,double
雙精度說明符。在Turbo
C中單精度型佔4個位元組(32位)內存空間,其數值范圍為3.4E-38~3.4E+38,只能提供七位有效數字。

雙精度型佔8
個位元組(64位)內存空間,其數值范圍為1.7E-308~1.7E+308,可提供16位有效數字。

實型變數說明的格式和書寫規則與整型相同。

例如: float x,y; (x,y為單精度實型量)

double a,b,c; (a,b,c為雙精度實型量)

實型常數不分單、雙精度,都按雙精度double型處理。

C. 浮點數的存儲問題

先看看浮點數格式
·一個浮點數總共有4個位元組,32位
第一個比特表符號 0正數 1負數
後八個比特表階碼,即為指數,這個數在實際的數上面加127
最後23個比特表尾數 原碼表示

具體分析
對於3.25

正數 首位為0

用二進製表示 11.01=1.101乘以2的1次方
所以階碼為1 127+1=128
10000000

對於尾數1.101,因為規格化的數都是最高位為1,即小數點左邊的數為1
所以這個1就省略,因此存儲的時候就存101

10100000 00000000 0000000

把所有的拼起來
01000000 01010000 00000000 00000000

你的上面最後寫反了

D. 計算機浮點數的儲存原理

浮點是以單元形式儲存在內存上的,但每個單元內存有限,所以比如你想輸入1/3的話,你以為是1/3了,實際上不足1/3,而是0.3333333333333333,所以計算時,會以0.3333333333333333的形式去計算,而不是1/3,因此出現了本來是0.6的,而輸出卻是0.599976.建議把浮點精度變大

熱點內容
c語言中的除號 發布:2024-11-15 16:51:09 瀏覽:215
安卓ops是什麼文件 發布:2024-11-15 16:32:18 瀏覽:927
雙線性插值演算法c 發布:2024-11-15 16:30:45 瀏覽:866
c語言和vc的區別 發布:2024-11-15 16:19:23 瀏覽:118
linux是免費的嗎 發布:2024-11-15 15:53:44 瀏覽:617
多控存儲 發布:2024-11-15 15:52:42 瀏覽:283
一年級數學分解演算法 發布:2024-11-15 15:41:08 瀏覽:411
安卓個人熱點怎麼分享 發布:2024-11-15 15:40:16 瀏覽:264
墊錢解壓 發布:2024-11-15 15:38:54 瀏覽:336
miui4相當於安卓什麼系統 發布:2024-11-15 15:37:54 瀏覽:709