最近在看《深入理解計算機系統》,里面說當a和b是無符號整數時,在執行計算t=a-b中,當a-b<0,CMP指令會設定進位標志。但是舉個例子,4-7=0100+1001=1101(無論有符號數還是無符號數計算機都是轉換成補碼通過加法計算減法),這時候最高位并沒有進位,那為什么會設定進位標志呢?還是說這個進位標志是CMP指令判斷了結果小于0后強行設定的?
uj5u.com熱心網友回復:
什么時候算最高位進位了uj5u.com熱心網友回復:
看這里
https://blog.csdn.net/lc_miao/article/details/84929497
uj5u.com熱心網友回復:
計算機原理早就丟的不知道哪里去了我記得匯編有個sf暫存器,它根據加減法后的結果最高位來置位,而不管是不是有無符號運算
uj5u.com熱心網友回復:
計算機里面對有符號和無符號的計算都是一樣的, 只是對于計算出來的結果按照有符號和無符號來解釋輸出減法也是把運算元變成負數的補碼方式后按照加法來執行的
進位記得是有專門的硬體標記的, 是研究硬體設計的原理嗎?
uj5u.com熱心網友回復:
CF在具體確定時不只是根據最高位有無進位。而是 CF = (最高位有進位)^(加法/減法),其中減法時后者為1.最近也在看這本書,恰巧也有此疑問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251191.html
標籤:C++ 語言
