fbpx
维基百科

算術溢出

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

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

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

檢查溢位 编辑

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

控制溢位 编辑

有幾個控制溢位的方法:

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

除零計算 编辑

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

相關參見 编辑

算術溢出, 此條目没有列出任何参考或来源, 2011年2月24日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 算術溢位, arithmetic, overflow, 或簡稱為溢位, overflow, 指的是, 在電腦領域裡所發生的溢位條件是, 執行單項數值計算時, 當計算產生出來的結果是非常大的, 大於暫存器或記憶體所能儲存或表示的能力限制, 在電腦領域裡, 執行多項或累計的數值計算時, 當計算產生出來的總值是非常大的, 大於暫存器或記憶體. 此條目没有列出任何参考或来源 2011年2月24日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 算術溢位 arithmetic overflow 或簡稱為溢位 overflow 指的是 在電腦領域裡所發生的溢位條件是 執行單項數值計算時 當計算產生出來的結果是非常大的 大於暫存器或記憶體所能儲存或表示的能力限制 在電腦領域裡 執行多項或累計的數值計算時 當計算產生出來的總值是非常大的 大於暫存器或記憶體所能儲存或表示的能力限制 要注意的是 溢位可能會在其他位址被置換 來源請求 加法器是中央处理器算术逻辑单元中的核心之一 当长度为n位的两个二进制数经过加减法器运算 得到的长度为n位的结果不是正确值时 我们说发生溢出 目录 1 檢查溢位 2 控制溢位 3 除零計算 4 相關參見檢查溢位 编辑大多數的電腦都可以區別以上兩種溢位條件 當加法或減法的結果發生進位 必須考量到當運算的數值與結果都是unsigned numbers 無號數值 即 正數 型態時 運算的結果就不適合使用這個數值型態 所以 在執行無號數值 正數 的加法或減法之後檢查進位旗標是非常有用的作法 溢位 在運算結果為無號數值時容易發生 可以從有符號的運算數值預計出這類的情形 例如 兩個正整數相加產生的結果為一個負數 所以 在執行2的補數的加法或減法之後檢查溢位旗標是非常有用的作法 換言之 有考慮到有號數值 控制溢位 编辑有幾個控制溢位的方法 設計 選擇正確的資料型態 尤其要注意資料長度與signed unsigned資料符號 迴避 事先注意指令的運作以及檢查運算的數值 或許可以確保計算出來的結果不會超過記憶體儲存資料的限制 控制 當它被偵測到 還有在其他的程序完成時被檢測出來 那麼溢位是可以被預料的 例如 兩個位元大的兩個數值做加法計算 這種情形最可能發生 步驟如下 先加低位元再加高位元 但是如果它必須完成低位元的運算 就會產生位元加法的運算溢位 那麼就有必要做偵測和增加高位元的總和 通常CPU有支援偵測數值加法大於暫存器大小的作法 基本上這個作法是採用狀態位元的方式 增值 假如儲存的數值過大就會被分配給其他特定的數值 這時溢位就會發生 然後傳回旗標值時就會產生連續運作的現象 檢查這個問題最有用的方法 就是在整體的計算結尾做一次性的檢查工作 而不是檢查每一個執行步驟 這個作法最常用在浮點硬體呼叫浮點運算器 忽略 這是最普遍的作法 但是這個作法會得出不正確的結果 以及降低程式的安全性 除零計算 编辑任何數除以零的計算 Divided by zero 不是 算術溢位的一種 在數學上只能明顯算是不明確的定義 Undefined 它計算出來的結果只能當成是 沒有 值 而不是非常大的無限數值 相關參見 编辑進位 旗標 溢位 緩衝區溢位 Buffer overflow IEEE 754 算术下溢 整数溢出 取自 https zh wikipedia org w index php title 算術溢出 amp oldid 76251987, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。