21. 以 8 個位元表示有號整數,以二的補數表示負數,請問二進位 01111111 和二進位 00000011 相加之後,系統所得的二進制答案,再轉 為十進制之後,會是以下哪一個答案?
(A) -2
(B) 2
(C) -126
(D) 126

答案:登入後查看
統計: A(13), B(3), C(55), D(9), E(0) #3113640

詳解 (共 3 筆)

#5838315
將二進位 01111111 和二進位 0...
(共 185 字,隱藏中)
前往觀看
8
0
#6422299

要將兩個 8 位元有號整數(以二的補數表示負數)相加並轉換為十進制,請遵循以下步驟:

1. 將二進位數轉換為十進制:

  • 01111111
    01111111

    • 最高位元(最左邊的位元)是 0,表示這是一個正數。
    • 對於正數,其值直接是其二進位值。
    • 01111111_2 = 0times27+1times26+1times25+1times24+1times23+1times22+1times21+1times20 = 0+64+32+16+8+4+2+1=127_10
  • 00000011
    00000011

    • 最高位元是 0,表示這是一個正數。
    • 00000011_2 = 0times27+ldots+1times21+1times20 = 2+1=3_10

2. 執行二進位相加:

現在將 01111111 和 00000011 相加:

01111111 (+127) + 00000011 (+3) ---------- 10000010
  • 最右邊:1 + 1 = 10 (寫 0,進位 1)
  • 第二位:1 + 1 (進位) = 10 (寫 0,進位 1)
  • 第三位:1 + 1 (進位) = 10 (寫 0,進位 1)
  • 第四位:1 + 1 (進位) = 10 (寫 0,進位 1)
  • 第五位:1 + 1 (進位) = 10 (寫 0,進位 1)
  • 第六位:1 + 1 (進位) = 10 (寫 0,進位 1)
  • 第七位:1 + 0 + 1 (進位) = 10 (寫 0,進位 1)
  • 最高位:0 + 0 + 1 (進位) = 1

結果是 10000010。

3. 將二進位結果 10000010 轉換為十進制:

  • 結果 10000010 的最高位元是 1,表示這是一個負數。
  • 要將二補數表示的負數轉換回十進制,需要進行以下步驟:
    1. 取反 (One's Complement):將所有的 0 變為 1,1 變為 0。 10000010 反轉後為 01111101
    2. 加 1:將上一步的結果加 1。 01111101 + 1 = 01111110
    3. 轉換為十進制:將這個正數的二進位值轉換為十進制。 01111110_2 = 0times27+1times26+1times25+1times24+1times23+1times22+1times21+0times20 = 0+64+32+16+8+4+2+0=126_10
    4. 由於原始數字是負數,所以最終結果是負的 126

4. 驗證 (溢位): 8 位元有號整數的表示範圍是 -128 到 +127。 我們的十進制和是 127+3=130。由於 130 超出了 127 的範圍,發生了溢位 (overflow)。在二補數加法中,正數加正數結果最高位元變為 1,通常表示溢位,且其結果將被解釋為一個負數。

因此,系統所得的二進制答案 10000010,轉為十進制後是 -126

The final answer is boxedC
最終答案是 boxedC

0
0
#7160661
這是一道非常經典的計算機概論題目,主要考...
(共 1885 字,隱藏中)
前往觀看
0
0