2011-10-04 249 views
0

我試圖將FFAD(十六進制)轉換爲十進制值,然後對其進行一二補碼。 FFAD表示爲一個16位整數。 當我將FFAD轉換爲基數2時,我得到1111111110101101.將十六進制轉換爲二進制和16位二進制補碼

我的問題是如何知道它是否爲負數?

我有二元,現在要做的補通常我會在最後一位,從0到1改變,然後翻轉所有位,但作爲一個16位整數,我沒有任何更多的可用位。由於第16位是1,這是否意味着它是負數?我將如何做補充?我只是混淆這個問題,任何指針將不勝感激。

回答

3

它的負面,因爲它左填充了一個。用零填充左邊將表示一個正數。例如,這裏有三個位數十進制值:

  • 011 = 3
  • 010 = 2
  • 001 = 1
  • 000 = 0
  • 111 = -1
  • 110 = -2
  • 101 = -3
  • 100 = -4

請注意,左側填充1的數字爲負數,左側填充0的數字爲正數。

2的補標準程序是否定你的位,然後加1

1111111110101101成爲0000000001010010.然後添加1獲得0000000001010011.

+0

謝謝,我不知道爲什麼我所以很困惑 – Cheesegraterr

+0

快速的問題,如果我要做0AA8 ...那給了我0000101010101000,那剩下的填充0,所以它是正面的?而對於兩個我只是保持相同的位模式? – Cheesegraterr

+0

是的,這是積極的。要應用2s恭維,否定所有的位,然後加1.你應該最終與1111010101011000 – Mjonir74

相關問題