国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C語言中浮點數在計算機中的存儲

2019-11-11 06:52:43
字體:
來源:轉載
供稿:網友

浮點數在內存中存儲時,就要提到一個關鍵詞“科學計數法”,float和double的存儲方式是一樣的,下面用float做以解釋;任意一個二進制浮點數V可以表示成下面形式:

 

  V=(-1)^S*M*2^E

 

(1)(-1)^S表示符號位,當S = 0,V為正;當S = 1,V為負;

(2)M為有效數字,因為M是二進制,大于等于1,小于2。

(3)2^E表示指數位

舉例來說:

十進制的5.0,寫成二進制是101.0,相當于1.01*2^2。按上面科學計數法的格式,可以得出S = 0,M = 1.01,E = 2。如果是-5.0,S= 1,M = 1.01. E = 2。

 

 

對于單精度浮點數來講,占32位,每個bit位存入相應的二進制數,具體看下面:

下面對S,M,E如何存入內存做以解釋:

S(符號位):

(-1)^S表示符號位,當S = 0,V為正;當S = 1,V為負;

 

M(尾數)

1<=M<2;

M要寫成1.xxxxxx的形式,xxxxxx表示小數部分,在把M存入計算機時,M的第一位總是1,因此,可以把第一位1在每次存入的時候去掉,只存入小數部分,在讀取的時候再在前面加上1,這樣就可以用23位全部來存小數部分,等于可以保留24位有效數字。

 

E(階碼):

E為一個無符號整形,E為8位時,它的取值范圍為0~255;若為double型,E為11,它的取值范圍是0~2047。

但是,在科學計數法中,E是可以表示負數的,所以規定,存入內存時E的真實值必須在加上一個中間值,對于8位的E,這個中間值位127;對于11位的E,這個中間值位1023。在讀取的時候在減去127。例如,2^10的E是10保存成單精度浮點型,存入內存時,必須保存成10+127=137,即10001001,在讀取時在減去127。

所以E的真實值的范圍就變成了127~128.

 

下面在解釋E的3中特殊情況:

(1)E不全位0或不全為1

讀取時指數E的計算值減去127,得到真實值,再將有效數字M前加上1.

比如:

0.5的二進制形式為0.1,由于規定M必須大于1小于2,則0.1的小數點右移1位,則為1.0*2^(-1),M1.0去掉正數部分的1其余有效位都為0;E存入時為-1+127 = 126,表示為二進制為01111110,,則其二進制為

0 01111110 00000000000000000000000

(2)E為全0

這時E為最小,浮點數的指數E等于0-127+1即為真實值,有效數字M不再加上第一位的1,

即讀取為0.xxxxxx的小數。這個數表示正負0,是一個接近0的很小的值。

(3)E位全1

這時,如果有效數字M全位0,表示正負無窮大(正負取決于符號S)。

 

 

 

 

對于占64位的double,S占1位,E占11位,M占52位


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 兰溪市| 北川| 图们市| 连山| 霞浦县| 景东| 定结县| 白水县| 蛟河市| 张北县| 穆棱市| 德州市| 白银市| 夹江县| 安图县| 辽宁省| 都昌县| 尚义县| 永城市| 平邑县| 枣强县| 关岭| 巴青县| 台江县| 北票市| 揭东县| 池州市| 资兴市| 阿克| 沁阳市| 营山县| 会同县| 常熟市| 灵山县| 郓城县| 万载县| 大兴区| 长子县| 沁阳市| 眉山市| 称多县|