逆波蘭表示法完全指南

最後更新: 7月2026
  • 逆波蘭表示法,或稱後綴表示法,將運算子放在運算元之後,因此無需使用括號。
  • 它源自於 Jan Łukasiewicz 創建的波蘭語前綴表示法,用於簡化命題邏輯。
  • 惠普公司在其標誌性計算器(如 HP-9100A 和 HP-35)中大力推廣了這種技術。
  • 在電腦領域,它是透過使用堆疊來實現的,是 Unix 等系統和麵向堆疊的語言的基礎。

逆波蘭表示法

你可能曾經好奇過那些老式科學計算器的內部運作原理,或者為什麼有些程式語言似乎把數學公式寫反了。雖然我們從小就被教導加減符號總是放在數字的中間,但有一個叫做逆波蘭表示法的奇妙世界,它顛覆了我們所有的認知。

這套系統並非現代發明,它源自於純粹的邏輯思維,旨在提高代數表達式的效率。與我們通常的做法不同,這裡因子的順序會改變表達式的書寫方式,使我們能夠完全忽略括號,簡化電腦系統中的資料輸入。

起源:從 Jan Łukasiewicz 到計算機

逆波蘭表示法

這一切始於1924年,這要歸功於一位名叫揚·盧卡謝維奇(Jan Łukasiewicz)的傑出的波蘭數學家、邏輯學家和哲學家。他致力於簡化命題邏輯,並創建了前綴表示法(或波蘭表示法),其中運算符位於操作數之前。例如,如果我們想計算3加4,我們不會寫3 + 4,而是寫3 + 4

  什麼是 Eclipse IDE,為什麼它是開發人員必備的環境?

儘管最初它似乎只是邏輯學家和哲學家們感興趣的概念,甚至阿隆佐·丘奇在他的數理邏輯著作中也曾提及,但這個概念最終還是被引入了計算機科學領域。事實上,LISP程式語言的語法正是基於這個前綴模型,這顯示源自於邏輯的概念最終成為了強大的程式設計工具。

逆波蘭表示法究竟是什麼?

逆波蘭表示法

前綴表示法將運算子放在運算元之前,而逆波蘭表示法(也稱為 RPN後綴表示法)則相反:它將運算子放在操作數之後。因此,我們通常的 2 和 5 的和就變成了2 5 +

這個系統最強大的地方在於,只要運算子的運算元數量固​​定,就可以省略括號。以運算 5 * (12 + 4) 為例。在傳統系統中,我們需要用括號強制先進行加法運算;然而,在逆波蘭表示法 (RPN) 中,它可以簡單地寫成5 12 4 + *。這對於機器來說更加簡潔明了。

惠普和計算機的黃金時代

逆波蘭表示法

60年代中期,澳洲科學家查爾斯·倫納德·漢布林完善了將此系統應用於電子設備的演算法。隨後,惠普公司決定投資研發,並於1968年推出了HP-9100A桌上型計算器,這款計算器徹底改變了產業格局。不久之後,傳奇的HP-35問世,這是第一款袖珍科學計算器,在1972年至1975年間,成千上萬的工程師和學生開始使用RPN(逆波蘭表示法)。

  Kruskal 演算法及其在圖論中的應用

使用這些機器需要額外花費一些腦力來解讀結果,但就擊鍵次數而言,效率要高得多。無需輸入冗長的公式並按下等號,只需輸入數字和運算符,機器即可立即處理,從而大大提高了工作效率。

技術實施:煙囪和管道

逆波蘭表示法

從程式設計角度來看,逆波蘭表示法 (RPN) 非常出色,因為它使用一種名為堆疊的資料結構即可輕鬆實現。系統將數字儲存在堆疊中,一旦遇到運算符,它就會提取最後輸入的值,執行計算,並將結果壓回堆疊中。

正是由於這種高效性,儘管我們現在很少見到使用這種系統的實體計算器,但逆波蘭表示法(RPN)仍然在現代技術的內部運作中發揮作用。它被廣泛應用於面向堆疊的程式語言和基於管道或資料流的作業系統中, Unix環境中的經典例子就是它的應用。

關於盧卡謝維奇和邏輯的奇聞軼事

揚·盧卡謝維奇不僅為我們留下了這種數學書寫方式,他也是多值邏輯和模態邏輯的先驅。他甚至挑戰了諸如說謊者悖論(“這是假的”)之類的智力難題。他的解決方案堪稱精妙:他認為邏輯原理只適用於可以作為變數值的對象,而由於「這是假的」這個自相矛盾的短語不可能是變數的值,因此它根本不屬於邏輯範疇,無法用傳統的邏輯方法進行分析。

  莫斯卡定理與量子計算的到來

這段引人入勝的旅程,從一位波蘭邏輯學家的構思到惠普計算器的電路和Unix內核,向我們展示了一種另闢蹊徑的資訊組織方式如何優化資料處理。逆波蘭表示法無需使用括號,並依靠堆疊,因此它仍然是許多現代電腦系統架構中一個隱形至關重要的支柱。