浮點數在記憶體中的儲存
阿新 • • 發佈:2018-11-09
浮點數在記憶體中的儲存
浮點數家族:float,double,long double型別.
同一個數為啥差別這麼大?想知道為神馬?請讀下文。
詳細解讀:
1.根據國際標準IEEE(電氣和電子工程協會)754,任意一個二進位制浮點數V可以表示成下面的形式: @(-1)^S*M*2^E @(-1)^s表示符號位,當s=0,v為正數;當s=1;v為負數。 @M表示有效數字,大於等於1,小於2. @2^E表示指數位 舉列來說: 十進位制5.0,寫成二進位制101.0,相當於1.01*2^2.3.IEEE754對於有效數字M和指數E的特別規定. IEEE754規定,在計算機內部儲存M時預設這個數的第一位總是1,因此可以被捨去,,只保留後面的xxxxx部分.比如儲存1.01的時候,只儲存01,等到讀取的時候,再把第一位的1加上去。這樣做的目的,是節省一位有效數字,以32位浮點數為例,留給M只有23位,將第一位的捨去以後,等於可以儲存24位有效數字。
E不為全0,不為全1 此時,浮點數就採用下面的規則表示,即指數E的計算值減去127(或1023),得到真實值,再將有效數字M前加上第一位的1.
懂了吧!!!