如果從較小的數字中減去一個大數字,則需要借位。進位標誌在減法操作中起到借位的作用。 現在假設我們想從56中減去66,顯然需要借用並且設置進位標誌。現在,如何執行這種減法來獲得結果-10,計算機將如何區分結果將成爲負數。請解釋過程。進位標誌和減號問號
1
A
回答
4
通常情況下,減法被實現爲否定,然後添加。因此,對於您的示例,CPU將在內部使用56並添加-66。在x86(或大多數其他現代處理器)上,否定將使用二進制補碼來完成,這意味着否定轉換爲「補充所有位,然後添加一個(並忽略任何執行)」。
0011 1000
- 0100 0010
---------
第二個操作數被轉換如下:
complement bits: 1011 1101
Increment: 1011 1110
所以這是執行的操作是:
0011 1000
+ 1011 1110
--------------
= 1111 0110
該結果可以被看作是任一246(作爲一個無符號數)或-10(作爲簽名號碼)。
-1
電腦不會區分這一點。計算機不關心符號,你和編譯器都這樣做。您將此值存儲到已簽名的變量中,然後將其用作已簽名的變量。長號碼和負號碼之間沒有語義上的區別。
3
如果計算機使用2的補碼,則不需要該計算機。
讓我們考慮一個簡單的例子,3 - 5:
0011 = 3
- 0101 = 5
————————
1110 = 14
結果是14,但在2的補,這也是-2值。所以,如果代碼使用簽名類型,它會正確地得到-2。否則,它將得到14.這完全取決於程序員如何編寫代碼。
1
計算機不做減法。它增加了一個負數。
所以,56 - 66 = 56 +(-66)
56 = 0x38(十六進制38)
-66 = 0xFFFFFFBE(在32位的系統的0x42補碼)
如果你確實要添加這些十六進制數字,你將以0xFFFFFFF6結尾,這是一個十進制數爲0xA的負數。
-2
進位標誌與符號位不同。進位標誌用於執行多部分算術,其中一個加法或減法的結果需要影響下一個較高部分。
隨着多年來寄存器規模的增加以及隨行人員的減少,您不會再看到這種做法了。
相關問題
- 1. 加號和減號
- 2. PHP - 替換問號標誌
- 3. 如何確定何時設置了零標誌,符號標誌,溢出標誌和進位標誌?
- 4. JQuery切換類加號和減號圖標問題
- 5. Regex.Split加號和減號
- 6. 64位無符號減法,問題
- 7. CMP和進位標誌
- 8. Jquery加號和減號符號切換
- 9. qt qstring toStdString減號減號
- 10. C#和Excel - 組行和移動加號/減號圖標
- 11. Java for-loop進入減號?
- 12. 使用TreeView的加號和減號圖標
- 13. JQuery的切換用加號和減號圖標
- 14. 情節的信號和標誌峯位置
- 15. postgresql索引使用 - 加號和減號
- 16. WooCommerce加號和減號按鈕
- 17. 符號標誌和溢出標誌根據預期
- 18. 無法通過使用「.nested」標誌和括號符號
- 19. 如何更改帶加號和減號符號的手風琴標題?
- 20. 日誌()行爲和編號#符號
- 21. 錯誤日誌列號和行號
- 22. 進位標記減法
- 23. 一元和二元減號
- 24. Z80上的溢出和進位標誌
- 25. 獲取減號或加號
- 26. 更改圖標減號點擊加號圖標時
- 27. javascript - 縮進和大括號的位置
- 28. 零標誌和進位標誌有什麼區別?
- 29. gnuplot中的加號/減號符號?
- 30. 遞增/遞減指令對進位標誌的影響
從66中減去56是10. – WhirlWind 2010-05-17 18:01:51
閱讀關於二進制補碼的內容:http://en.wikipedia.org/wiki/Two%27s_complement – WhirlWind 2010-05-17 18:02:34