天天看點

程式是怎樣跑起來的-第03章 計算機進行小數運算時出錯的原因

第03章 計算機進行小數運算時出錯的原因

熱身問題

1:二進制數0.1,用十進制數表示的話是多少?

    0.5

2:用小說點後三位的二進制數,能表示十進制數0.625麼?

    0.5+0.125,二進制表示為:0.101。

3:将小數分為基數、尾數、指數和符号4部分進行表現的形式稱為什麼?

    浮點數形式。浮點數是指把小數用“符号 尾數*基數的指數次冪”這種形式來表示。

4:二進制數的基數是多少?

    2。

5:通過把0作為數值範圍的中間值,進而在不使用符号位的情況下表示負數的方法稱為什麼?

    EXCESS系統表現。excess |ɪkˈses| A.noun 過量 過度。如把八位二進制數的一半0111 1111看作是0,那麼0111 1110則表示-1;

6:1010 1100.0101 0011這種二進制數,用十六進制數表示的話是多少?

    AC.53

3.3節 計算機運算出錯的原因

    十進制數0.1轉化成二進制數後,會變成0.000 1100 1100……(1100循環)這樣的循環小數。就像十進制無法表示1/3一樣,計算機這個功能有限的機器裝置,無法處理無限循環的小數的。

    很多程式設計語言都提供兩種表示小數的資料類型。分别是雙精度浮點數和單精度浮點數(double、float |fləʊt| verb 浮 漂浮 飄浮)。雙精度浮點說類型用64位、單精度浮點數用32位來表示全體小數。

    浮點數是指用符号、尾數、基數和指數四部分表示的小數。雙精度浮點數:符号部分[1位]指數部分[11位]尾數部分[52位];單精度浮點數:符号部分[1位]指數部分[8位]尾數部分[23位]。尾數部分用的是“将小數前面的值固定為1的正規表達式”。

3.5 正規表達式和EXCESS系統

     浮點數表示法中¥[尾數]部分用的是“将小數前面的值¥[固定為1]的正規表達式”。指數部分用的是“EXCESS系統表現”。以8位為例:0111 1111表示0[個人覺得沒什麼用,一樣隻能表示256種數]。尾數部分由于第一位必須是1,是以,省略該部分後就節省了一個資料位。

繼續閱讀