溢位OF和進位CF區別
處理器內部以補碼錶示有符號數,8個二進位制位能夠表達的整數範圍是:+127 ~ -128,16位表達的範圍是:+32767 ~ -32768.
如果運算結果超出了這個範圍,就是產生了溢位,有溢位,說明有符號數的運算結果不正確
例如:
3AH + 7CH=B6H,就是58 + 124=182,已經超出-128 ~ 127範圍,產生溢位,所以OF = 1;
另一方面,補碼B6H表達值是-74,顯然運算結果也不正確。
溢位標誌OF和進位標誌CF是兩個意義不同的標誌.進位標誌表示無符號數運算結果是否超出範圍,運算結果仍然正確;
溢位標誌表示有符號數運算結果是否超出範圍,運算結果已經不正確。
請看例子
例1:3AH + 7CH=B6H
無符號數運算:58+124=182,範圍內,無進位
有符號數運算: 58+124=182 ,範圍外,有溢位
例2:AAH + 7CH=(1)26H
無符號數運算:170+124=294,範圍外,有進位
有符號數運算:-86+124=28 ,範圍內,無溢位
處理器對兩個運算元進行運算時,按照無符號數求得結果,並相應設定進位標誌CF;同時,根據是否超出有符號數的範圍設定溢位標誌OF。
應該利用哪個標誌,則由程式設計師來決定。也就是說,如果將參加運算的運算元認為是無符號數,就應該關心進位;認為是有符號數,則要注意是否溢位。
判斷運算結果是否溢位有一個簡單的規則:只有當兩個相同符號數相加,而運算結果的符號與原資料符號相反時,產生溢位;
因為,此時的運算結果顯然不正確。其他情況下,則不會產生溢位。
轉自http://blog.csdn.net/yunlong4310/article/details/4817215
相關文章
- 記憶體溢位:native溢位 和 上層溢位記憶體溢位
- varchar or blob:欄位型別的儲存和溢位條件型別
- java記憶體溢位和記憶體洩漏的區別Java記憶體溢位
- 二進位制漏洞挖掘之整數溢位
- 阿里大佬講解Java記憶體溢位示例(堆溢位、棧溢位)阿里Java記憶體溢位
- 緩衝區溢位小程式分析
- 快取區溢位漏洞工具Doona快取
- [二進位制漏洞]棧(Stack)溢位漏洞 Linux篇Linux
- CF 552C 進位制轉換
- C進階指南(1):整型溢位和型別提升、記憶體申請和管理型別記憶體
- 快取區溢位檢測工具BED快取
- MySQL 數值型別溢位處理MySql型別
- 進位制詳解:二進位制、八進位制和十六進位制
- StackOverFlowError(棧溢位)Error
- 取反!和按位取反~的區別
- mysql的text/blob和行溢位MySql
- 使用metasploit進行棧溢位攻擊-5
- Redis緩衝區溢位及解決方案Redis
- IOT中溢位區屬性pctthreshold和including驗證
- python32位和64位的區別是什麼Python
- windows7電腦系統32位和64位區別Windows
- 64位Linux下的棧溢位Linux
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 記憶體溢位記憶體溢位
- 棧溢位基礎
- win10系統32位和64位區別 win10系統32位和64位哪個好Win10
- IMail SMTP 緩衝區溢位漏洞 (APP,缺陷) (轉)AIAPP
- Python32位和64位有何區別?如何檢視?Python
- !和~的區別(邏輯取反和按位取反)
- 10g PLSQL數值型別的溢位SQL型別
- 電位器和編碼器的區別
- python進位制轉換(二進位制、十進位制和十六進位制)及注意事項Python
- 記憶體和棧溢位問題定位記憶體
- office32位和64位有什麼區別嗎 office32位和64位哪個更好安裝哪個
- css 盒子溢位問題CSS
- Java記憶體溢位Java記憶體溢位
- JBOSS記憶體溢位記憶體溢位
- 八進位制,十六進位制和浮點數