2025年2月15日 星期六

小數和電腦浮點數

小數

小數的由來可以追溯到古代文明,一開始有的, 不叫小數, 而是分數。早在公元前5世紀,古印度的數學家就已經有分數的概念。直到18世紀後期,印度數學家首次使用小圓點“•”來隔開整數部分和小數部分,這被認為是小數點的真正誕生。


中國分數

中國的分數, 可以從劉徽說起。劉徽是中國三國時期的著名數學家,他在數學上做出了許多重要的貢獻,特別是在小數和無理數的研究方面。劉徽的工作主要集中在《九章算術》的注釋上,這部作品是中國古代數學的經典之一,包含了246個數學問題及其解法。

劉徽的數學難題與微數的概念

劉徽在解決數學問題時,特別關注於無理數的計算和表示。他提出了“開方不盡”的問題,這是指在計算某些數的平方根時,結果無法用整數或簡單的分數表示。為了解決這一問題,劉徽引入了“微數”的概念,這是一種用來表示無理數的近似值的方法。他的這一思想與後來的極限概念密切相關,並為小數的發展奠定了基礎。

小數的觀念形成

劉徽在《九章算術注》中,首次系統地使用十進制小數來表示無理數的近似值,這被認為是小數概念的早期形式。他用十進分數(即小數的前身)來描述無理數,這一方法使得數學家能夠更精確地處理那些無法用整數或簡單分數表示的數字。

具體的數學難題

  1. 圓周率的計算:劉徽使用“割圓術”來計算圓周率,這是一種通過內接多邊形的周長來逼近圓周長的方法。他的計算方法不僅提高了圓周率的精確度,還展示了他對極限思想的運用。

  2. 無理數的近似:在面對開方不盡的情況時,劉徽提出用微數來表示這些無法精確計算的數,這一方法使得他能夠在數學上處理更複雜的問題,並推進了小數的概念


西方分數

在西方,小數的使用相對較晚,直到16世紀,法國數學家克拉維斯(Simon Stevin)才開始在其著作《De Thiende》中系統地介紹了小數的概念。在這之前,人們對分數的複雜性和其運算有著深深地恐懼,分數的表示和運算相對於整數來說非常困難,這使得許多人在面對分數時感到無能為力。所以德國有句諺語「掉到分數里去了」("in die Brüche geraten")用來形容一個人陷入困境或絕境。為什麼會這樣,其實和當時的計數法有關。


在阿拉伯數字傳入歐洲前,數字系統主要使用羅馬數字,這一系統在計算上存在一些顯著的困難,尤其是在處理分數時。羅馬數字的特點是缺乏位置值系統,這使得進行加減乘除等基本運算變得相對複雜。以下是一些主要問題:

計數法的問題

  1. 缺乏零的表示:羅馬數字系統中沒有零的概念,這使得表示和計算變得更加困難。在需要表示“無”或“空”的情況下,羅馬人通常使用拉丁詞“nulla”來表達,但這並不方便於數學計算。

  2. 不易進行複雜運算:由於羅馬數字的結構,進行複雜的數學運算(如除法)非常困難。這是因為羅馬數字的表示方式不具備現代數字系統的靈活性,導致在進行長計算時容易出錯。

  3. 分數的表示:羅馬人使用名稱來表示分數,而不是像現代數字系統那樣使用符號。例如,1/12被稱為“uncia”,而1/2則用“S”表示(來自拉丁語“semis”)。這種命名方式使得分數的計算變得更加繁瑣,且不易於進行精確的數學運算。

導入阿拉伯數字的背景

在阿拉伯數字被引入之前,歐洲的計算主要依賴於羅馬數字和算盤。雖然羅馬人使用算盤進行計算,但這種方法仍然無法有效地處理更複雜的數學問題。阿拉伯數字的引入,尤其是位置值系統的使用,為計算提供了更大的靈活性和便利性,使得即使是文盲的人也能夠理解和使用數字進行基本的計算


小數的定義與分類

小數是實數的一種特殊表現形式,通常用來表示非整數的數值。小數可以分為有限小數和無限小數兩類:

  • 有限小數:小數部分有有限個數位,例如0.75、3.14等。

  • 無限小數:小數部分無限延續,可以進一步分為循環小數(如0.333...)和無理數(如π)


===

在計算機科學中,浮點數是一種用於表示實數的數據類型,特別是在需要表示非常大或非常小的數字時。浮點數的儲存方式遵循IEEE 754標準,這是一個由電氣和電子工程師協會(IEEE)於1985年制定的技術標準。


IEEE 754 - 維基百科


浮點數的儲存方式




(圖片來源: 由 Charles Esson, at the English Wikipedia project, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=3356830 )

浮點數在計算機內存中通常以二進制形式存儲,並且分為三個主要部分:

  1. 符號位(Sign bit)

    • 這一位用來表示數字的正負。若符號位為0,則數字為正;若為1,則數字為負。
  2. 指數偏移位(Exponent)

    • 指數位用來表示數字的大小範圍。根據IEEE 754標準,指數的表示方式通常使用偏移量(bias)來進行編碼。例如,在單精度浮點數中,指數佔用8位,並且使用127作為偏移量。
  3. 分數值(Fraction)

    • 分數值部分包含了數字的有效位數。對於單精度浮點數,分數值佔用23位。

這樣的結構使得浮點數能夠以科學記數法的形式表示,從而靈活地表示範圍廣泛的實數。例如,數字可以表示為:

    V=(1)signx E x F


IEEE 754標準

IEEE 754標準定義了多種浮點數格式,最常見的包括:

  • 單精度浮點數(32位)

    • 符號位:1位
    • 指數位:8位
    • 尾數位:23位
  • 雙精度浮點數(64位)

    • 符號位:1位
    • 指數位:11位
    • 尾數位:52位

這些格式的設計旨在解決浮點運算中的一些問題,如精度損失和運算不一致性。IEEE 754標準還定義了特殊值,如無窮大(Infinity)和非數(NaN),以及數值的舍入規則和異常處理方式







   



沒有留言:

張貼留言

熱門文章