跳至內容

算術溢位

出自Taiwan Tongues 台語維基
於 2025年8月24日 (日) 00:29 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

算術溢位(arithmetic overflow)抑是簡稱做溢位(overflow)是講:

一 . 佇電腦領域內底所發生的溢个條件是,執行單項數值計算時,做計算產生出來的結果是非常大的,大於暫存的記持體所會使儲存抑是表示會使有限制。 二 . 佇咧電腦領域內底,執行多項或者是累計的數值計算時,做計算產生出來的總值是非常大的,大於暫存的記持體所會使儲存抑是表示會使有限制。愛注意的是,溢位可能會佇其他的位置換。

加法器是中央處理器算是術邏輯單元中的核心之一。做長度為著 n 位的兩个兩个進位數經過加減的法器運算,得著的長度為 n 位的結果毋是正確值的時陣,咱講發生溢位

檢查溢位

大多數的電腦攏會當區別以上兩種溢位條件。做加法抑是減法的結果發生進位,著愛考量著當運算的數值佮結果攏是 unsigned numbers(初數值的時,即「正數」)型態的時陣,運算的結果就無適合使用這个數值型態。所以乎,咧執行無號數值(正數)的加法抑是減法了後檢查進位旗標是非常有路用的做法。「溢位」在運算結果為無號數值時容易發生,會當對有符號的運算數值按算出這類的情形(比如講:兩个正整數相加產生的結果為一个負數)。 所以乎,佇執行二的補數的加法抑是減法了後檢查溢位旗標是誠有路用的做法(換言之,有考慮著有號數值)。

控制溢位

有幾个控制溢位的方法:

一 . 設計的:選擇正確的資料型態,尤其欲注意資料長度佮 signed / unsigned 資料符號。 二 . 迴避:事先注意指令的運作佮檢查運算的數值,凡勢會當確保計算出來的結果袂超過記憶體儲存資料的限制。 三 . 控制:當伊去予人偵測著,猶閣有佇其他的程式去完成的時陣去予檢測出來,遐爾溢位是會當予預料的。比如講:兩个位元大的兩个數值做加法計算,這種的情形上可能發生。步數想袂落來:先加低位元閣加懸位元,毋過伊若是著愛完成低位元的運算,就會產生位元加法的運算溢位,遐爾就有必要做偵測佮增加高位元的總和。通常 CPU 有支援偵測數值加法較大於暫存器大細的做法,基本上這个做法是採用狀態位元的方式。 四 . 增值:假使儲存的數值過大就會被分配給其他特定的數值,這个時陣溢位就會發生,然後傳回旗標值的時陣就會產生連紲運作的現象。檢查這个問題上有路用的方法,就是咧整體的計算結尾做一改性的檢查工課,毋是檢查每一个執行步驟。這个做法上捷用佇浮點仔硬體呼叫浮點運算器。 五 . 失覺察:這是上普遍的做法,但是這个做法會著無正確的結果,以及降低程式的安全性。

除零計算

任何數除了以零的計算(Divided by zero)「 毋是呢」算講術溢位的一種。佇數學上只會使明顯算是無明確的定義(Undefined); 伊計算出來的結果干焦會當做是「無咧」值,毋是非常大的無限數值。

相關參見