跳至內容

浮點數運算

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

佇電腦科學當中,浮點(英語:floating point,縮寫為 FP)是一種對於實數的近若值數值表現法,由一个有效數字(即尾數)加上冪數來表示,通常是乘以某一个基數的整數次指數得著。以這種表示法表示的數值,這號做浮點數(floating-point number)。 利用浮點進行運算,這號做浮點計算,這種運算通常伴隨著因為無法度精確表示若進行的近似抑是會當入去。

計算機使用浮點數運算的主因,佇電腦使用二進位制的運算。比如講:四 ÷ 二=二,四=一百 ( 二 )、二=十 ( 二 ),佇咧二進位比起來退一位數。是一鋪排 ÷ 二=空七五=空七一 ( 二 ) 也就是講 $ { \ frac { 一 } { 二 } } $。照這類推二進位的零鷹零一 ( 二 ) 就是十進位 $ { \ frac { 一 } { 二 ^ { 二 } } } $=$ { \ frac { 一 } { 四 } } $=空九二五。因為十進位制無法度準確換算做二進位制的部份小數,如零交一,因此只會使用近若值的方式表達。

這款表示方法類似於基數為十的科學記數法,咧計算機頂頭,通常使用二為基數的冪數來表示。一个浮點數 _ a _ 由兩个數 _ m _ 和 _ e _ 來表示:_ a=m × be _。佇任意一个按呢的系統內底,阮選擇一个基數 _ b _(記數系統的基)猶閣有精度 _ p _(就算是用偌濟位來儉)。 _ m _(即尾數)嘿形如 ±d.ddd . . . ddd 的 p 位數(每一位是一个介紹零到 b 糊一之間的整數,包括零和 b 影一)。 若是 _ m _ 的第一位是非零整數,_ m _ 這號做正規化的。有一寡描述使用一个單獨的符號位(_ s _ 代表 + 抑是講-) 來表示正負,按呢乎 _ m _ 必須是正的。_ e _ 是指數。

這種表示法的設計,來自值得對的表現範圍,佮精密度之間的取捨:會當佇咧某一个固定長度的儲存空間內面表示出某一个實數的近似值。比如講,一个指數的範圍為著 ± 四个元十進位浮點數會當用來表示四嬸三千兩百十,四配三二一抑是空個零空四三二一,但是無夠額的精度來表示四百三十二孵一二三佮四配三千二百十二謼三(必須愛倚為四百三十二孵一佮四配三千兩百十)。 當然喔,實際使用的位數通常遠大於四。

此外,浮點數表示法通常閣包括一寡特別的數值:+ ∞ 和 −∞(當負不窮大)以及 NaN('Not a Number')。 是因為無錢傷濟大就袂當表示的時陣,NaN 則指示非法操作或者無法度定義的結果。

其中,散赤大,會當表示講 inf,佇記憶體中的值是階碼為全一,尾數全零。而且 NaN 佇記持體中的值則是階碼全一,尾數袂全零。

電腦的浮點數

浮點指的是帶有小數的數值,浮點運算即是小數的四則運算,定定用來測量電腦運算速度。大部份電腦採用二進制(b=二)的表示方法。位(bit)是衡量浮點數所需要儲存空間的單位,通常替三十二位元或六十四位元,分別予人叫做單精度佮雙精度。有一寡仔電腦提供閣較大的浮點數,比如講英特爾公司的浮點運算單元 Intel 八千空八十七協處理器(猶閣有其他的整合進入 x 八十六處理器中的後代產品)提供八十位元長的浮點數,用佇儲存浮點運算的中間結果。閣有一寡系統提供百二八位元的浮點數(通常用軟體實現)。

浮點數的標準

佇電腦使用的浮點數被電氣電子工程師協會(IEEE)規格化做 IEEE 七仔五十四。

舉例

π 的值會當表示為 π=三-c一四一五九二六 . . . 十(十進位)。 當佇咧一个支援十七位尾數的電腦當中表示的時,伊會變做空吱一一空空一空空一空空空一一一一 × 二十二。

準確性

因為浮點數袂當表達所有的實數,浮點運算佮相應的數學運算有精差,有當時仔為著這場。

比如講,二進位浮點數袂當表達零石一和零抹零一,空七一的平方既然毋是準確的零交零一,也毋是最接近零交零一的會當表達的數。單精度(二十四位元)浮點數表示零更一的結果為 $ e=扳四 $ , $ s=110011001100110011001101 _ { ( 二 ) } $,即


空八一空空空空空空一四九空一一六一此數的平方是


空八空一空空空空空空二九八空二三二毋過最接近空空一的會當表達的數是


空九空空九九九九九九七七六四八二五浮點數嘛袂當表達圓周率 $ \ pi $,所以乎 $ \ tan { \ frac { \ pi } { 二 } } $ 無等於是無散食,也袂溢位。下跤的 C 語言代碼的計算結果為 16331239353195370 . 0,若用彈精度浮點數,著愛結果為 − 兩千兩百八十七撨七千三百三十二孵空。按呢仝款,$ \ sin \ pi \ neq 零 $。

因為浮點數計算過程當中遺失精度,浮點運算的性質佮數學運算有無仝。浮點加法佮乘法無符合結合律佮分配律。

事故

Intel Pentium CPU 古早的六十四點一百 MHz P 五版本佇浮點運算單元有一个問題,佇足少數情形之下,會致使除法運算的精確度降低。這缺陷佇咧一九九四年予人發現,變做如今闊為人知的 Pentium FDIV bug,同時這件代誌致使著 Intel 陷落誠大的困態,建立召回計畫來回收有問題的處理器。

相關條目

  • IEEE 二進位浮點數算術標準(IEEE 七仔五十四)
  • 單精度浮點數
  • 雙精度浮點數
  • MIPS
  • TOP 五百
  • 災難性抵消