看板 Programming 關於我們 聯絡資訊
※ 引述《[email protected] (-858993460)》之銘言: > 如最早的那篇回文 現代電腦一律是 2 補數 所以是 C 恩 這我了解 A B C 選項是我算的 不是題目 ^^ > negative flag 單純就是看結果以有號數解釋時是不是負數而已 > 和 carry/overflow 無關 > 最後兩句話是在說 carry 和 overflow 兩個 flag 的: > carry flag 是無號數相加溢出時設為 1 > 也就是偵測 180+89=269 >= 256 這種情形 > 10110100 => 180 > + 01011001 => 89 > ---------- > 00001101 => 13 > 這種情形發生時 最高位會進位出去 > 所以 carry flag 就在這時設為 1 > 之所以叫 carry flag 是因為它會用在 multi-word 相加時用來記錄進位 這應該就像我上篇說的 進位到第九位,但只有8 bits,所以是carry > overflow flag 則是有號數相加溢出時設為 1 > 也就是偵測 80+70=150 >= 128 或 (-80)+(-70)=-150 < -128 這種情形 > 這兩個例子是: > 01010000 => 80 10110000 => -80 > + 01000110 => 70 + 10111010 => -70 > ---------- ---------- > 10010110 => -106 01101010 => 106 感覺和carry很像,只是差在有無號數 @@ 第二個例子看懂(最高位1+1,進到第九位) 第一個例子,用十進位算,確實overflow(>127,2^7-1) 但用二進位算,最高位是0+0,最後是1 沒有進到第九位,這樣也算overflow嗎? > 由於這種情形發生時 最高位會發生符號改變 還是overflow要看這句話? 最高位改變(以第一個例子看,都是0,變成1;以第二個例子看,都是1,變成0) > 因此 overflow flag 就會在這個時候設為 1 > 這樣應該有回答到你的問題... 抱歉吼,小弟駑鈍,對資工來說,這應該很簡單... -- ┌─────KKCITY─────┐ KKBOX 可立刻 聽音樂 bbs.kkcity.com.tw 想聽什麼歌 通通不必等 └──From:61.231.64.147 ──┘ http://www.kkbox.com.tw ■■ --