6. 下列關於 2 的補數表示法(2's complement)的敘述,何者錯誤?
(A)最小的負數無法用正整數表示,因為超出範圍會造成 overflow
(B)-1 通常表示為 全為 1 的位元值,例如在 8 位元中為 11111111
(C)0 與-0 是不同的表示方式,但值相等
(D)若使用 n 位元表示法,其整數表示範圍為-2^(n-1) 到 2^(n-1)-1。
答案:登入後查看
統計: A(9), B(4), C(14), D(1), E(0) #3435235
統計: A(9), B(4), C(14), D(1), E(0) #3435235
詳解 (共 2 筆)
#6410101
這題問的是關於二補數表示法 (2's complement) 的敘述,何者是錯誤的。
我們來分析一下每個敘述:
(A) 最小的負數無法用正整數表示,因為超出範圍會造成 overflow
- 在 n 位元的二補數表示法中,可以表示的整數範圍是從 −2n−1 到 2n−1−1。
- 最小的負數是 −2n−1。它的絕對值是 2n−1。
- 在 n 位元中,最大的正整數是 2n−1−1。
- 由於 2n−1>2n−1−1,所以最小負數的絕對值比最大正整數大。嘗試將最小負數的絕對值用同位數的正整數來表示會超出最大可表示的正數範圍,導致溢位 (overflow)。
- 這是正確的。
(B) -1 通常表示為 全為 1 的位元值,例如在 8 位元中為 11111111
- 在二補數中,要表示一個負數,可以先取對應正數的二進位表示,然後將所有位元反轉(一補數),最後加 1。
- 以 8 位元為例,正數 1 的二進位是 00000001。
- 將所有位元反轉 (一補數):11111110。
- 加 1:11111110 + 00000001 = 11111111。
- 所以,-1 在二補數中表示為所有位元都是 1。
- 這是正確的。
(C) 0 與-0 是不同的表示方式,但值相等
- 這是錯誤的。在二補數表示法中,零只有一種表示方式。+0 和 -0 的二補數表示是相同的,都是全為 0 的位元。
- 以 8 位元為例,+0 是 00000000。
- 根據二補數規則計算 -0:
- 正數 0 的二進位:00000000
- 位元反轉(一補數):11111111
- 加 1:11111111 + 1 = 100000000。在 8 位元系統中,最高位的進位會被捨棄,結果是 00000000。
- 所以,+0 和 -0 的二補數表示都是 00000000。它們的表示方式是相同的。
(D) 若使用 n 位元表示法,其整數表示範圍為 −2n−1 到 2n−1−1。
- 這是正確的。在 n 位元的二補數表示法中,最高位是符號位(0 表示非負數,1 表示負數)。
- 非負數的範圍從 0 到 2n−1−1。
- 負數的範圍從 -1 到 −2n−1。
- 總共有 2n 種不同的位元組合,涵蓋了從 −2n−1 到 2n−1−1 的所有整數。
根據以上分析,敘述 (C) 關於 0 和 -0 表示方式不同是錯誤的,在二補數中它們的表示方式是相同的。
答案是 (C)。
1
0
#6436580
(A) 最小的負數無法用正整數表示,因為超出範圍會造成 overflow
→ 正確。以8位元為例,最小的負數是-128,正整數最大只能到127,-128無法用正整數表示。
(B) -1通常表示為全為1的位元值,例如在8位元中為11111111
→ 正確。2的補數表示法中,-1確實是全1。
(C) 0與-0是不同的表示方式,但值相等
→ 錯誤。2的補數表示法只有一種0的表示法(全0),沒有-0這種情況。這是和1的補數或符號數不同的地方。
(D) 若使用n位元表示法,其整數表示範圍為-2^(n-1) 到 2^(n-1)-1
→ 正確。這是2的補數的標準範圍。
答案:C
2的補數沒有-0,只有一種0的表示方式。
1
0