21. 以 8 個位元表示有號整數,以二的補數表示負數,請問二進位 01111111 和二進位 00000011 相加之後,系統所得的二進制答案,再轉 為十進制之後,會是以下哪一個答案?
(A) -2
(B) 2
(C) -126
(D) 126
答案:登入後查看
統計: A(13), B(3), C(55), D(9), E(0) #3113640
統計: A(13), B(3), C(55), D(9), E(0) #3113640
詳解 (共 3 筆)
#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,表示這是一個負數。
- 要將二補數表示的負數轉換回十進制,需要進行以下步驟:
- 取反 (One's Complement):將所有的 0 變為 1,1 變為 0。 10000010 反轉後為 01111101
- 加 1:將上一步的結果加 1。 01111101 + 1 = 01111110
- 轉換為十進制:將這個正數的二進位值轉換為十進制。 01111110_2 = 0times27+1times26+1times25+1times24+1times23+1times22+1times21+0times20 = 0+64+32+16+8+4+2+0=126_10
- 由於原始數字是負數,所以最終結果是負的 126。
4. 驗證 (溢位): 8 位元有號整數的表示範圍是 -128 到 +127。 我們的十進制和是 127+3=130。由於 130 超出了 127 的範圍,發生了溢位 (overflow)。在二補數加法中,正數加正數結果最高位元變為 1,通常表示溢位,且其結果將被解釋為一個負數。
因此,系統所得的二進制答案 10000010,轉為十進制後是 -126。
The final answer is boxedC
最終答案是 boxedC
0
0