算術溢出

算術溢位(arithmetic overflow)或簡稱為溢位(overflow)指的是:

  1. 電腦領域裡所發生的溢位條件是,執行單項數值計算時,當計算產生出來的結果是非常大的,大於暫存器記憶體所能儲存或表示的能力限制。
  2. 在電腦領域裡,執行多項或累計的數值計算時,當計算產生出來的總值是非常大的,大於暫存器或記憶體所能儲存或表示的能力限制。要注意的是,溢位可能會在其他位址被置換。[來源請求]

加法器中央处理器算术逻辑单元中的核心之一。当长度为n位的两个二进制数经过加减法器运算,得到的长度为n位的结果不是正确值时,我们说发生溢出

檢查溢位

大多數的電腦都可以區別以上兩種溢位條件。當加法或減法的結果發生進位,必須考量到當運算的數值與結果都是unsigned numbers(無號數值,即「正數」)型態時,運算的結果就不適合使用這個數值型態。所以,在執行無號數值(正數)的加法或減法之後檢查進位旗標是非常有用的作法。「溢位」在運算結果為無號數值時容易發生,可以從有符號的運算數值預計出這類的情形(例如:兩個正整數相加產生的結果為一個負數)。所以,在執行2的補數的加法或減法之後檢查溢位旗標是非常有用的作法(換言之,有考慮到有號數值)。

控制溢位

有幾個控制溢位的方法:

  1. 設計:選擇正確的資料型態,尤其要注意資料長度與signed/unsigned資料符號。
  2. 迴避:事先注意指令的運作以及檢查運算的數值,或許可以確保計算出來的結果不會超過記憶體儲存資料的限制
  3. 控制:當它被偵測到,還有在其他的程序完成時被檢測出來,那麼溢位是可以被預料的。例如:兩個位元大的兩個數值做加法計算,這種情形最可能發生。步驟如下:先加低位元再加高位元,但是如果它必須完成低位元的運算,就會產生位元加法的運算溢位,那麼就有必要做偵測和增加高位元的總和。通常CPU有支援偵測數值加法大於暫存器大小的作法,基本上這個作法是採用狀態位元的方式。
  4. 增值:假如儲存的數值過大就會被分配給其他特定的數值,這時溢位就會發生,然後傳回旗標值時就會產生連續運作的現象。檢查這個問題最有用的方法,就是在整體的計算結尾做一次性的檢查工作,而不是檢查每一個執行步驟。這個作法最常用在浮點硬體呼叫浮點運算器
  5. 忽略:這是最普遍的作法,但是這個作法會得出不正確的結果,以及降低程式的安全性

除零計算

任何數除以零的計算(Divided by zero)「不是」算術溢位的一種。在數學上只能明顯算是不明確的定義(Undefined);它計算出來的結果只能當成是「沒有」值,而不是非常大的無限數值。

相關參見

Tags:

算術溢出 檢查溢位算術溢出 控制溢位算術溢出 除零計算算術溢出 相關參見算術溢出

🔥 Trending searches on Wiki 中文:

LE SSERAFIM謝坤達惡鬼 (電視劇)梅艷芳各国家和地区人口列表高严注意力不足過動症刘浩存車籠埔斷層吳雪雯車銀優三流之路臺灣以色列—哈馬斯戰爭吴磊WIND BREAKER—防風少年—黄金周 (日本)大韩民国大谷翔平中国朝代ITZY夢想成為魔法少女許金山謀殺妻女案Instagram三体 (小说)Rado吉伊卡哇防彈少年團約會大作戰国共内战來自星星的你乘风2023無職轉生~到了異世界就拿出真本事~角色列表李多慧 (啦啦隊)般若波羅蜜多心經&TEAM迈克尔·杰克逊米崙斷層NBA總冠軍列表马来西亚新聞女王Hanni白鹿 (演員)Unnamed Memory 無名記憶徐熙媛逆天奇案2马龙 (乒乓球运动员)金正恩麻豆传媒李克强之死金字塔游戏邁爾斯-布里格斯性格分類法三体 (2024年电视剧)TOMORROW X TOGETHER财阀X刑警特斯拉 (公司)林宅血案石田三成鄭龍珠但願人長久 (電影)繼承者們山东省長相思 (電視劇)水豚應力MIRROR (組合)六四事件奔跑吧 (第十二季)狐妖小红娘保生大帝性交白紙運動機動戰士GUNDAM SEED2024年能登半島地震大熊猫🡆 More