第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,是以,省略該部分後就節省了一個資料位。