複選題
13.
二進位的非負整數表示系統中,下列何者正確?
(A)一個 byte 可以表示的最大值為 126
(B)1000 表示十進位值
為 8
(C)十進位的-1 以 1111 表示
(D)010 與 10 所表示的十進位
數值相同
(E)16 位元能夠表示的整數個數有 65536
統計: A(15), B(163), C(35), D(153), E(140) #3145753
詳解 (共 2 筆)
【解題思路】
這題考五個重點:
-
1 byte = 8 bits → 最大值怎麼算?
-
二進位轉十進位
-
補數(二補數)的負數表示法(但本題只看「非負」)
-
二進位前面的 0 不影響數值
-
n 位元可以表示的總個數 = 2ⁿ
逐一解析,你會完全懂。
【逐一破題】
(A) 一個 byte 可以表示的最大值為 126
錯。
1 byte = 8 bits
全是 1 時 → 最大值:
11111111(二進位)
= 255(十進位)
計算方式:
2⁷ + 2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2¹ + 2⁰
= 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
= 255
126 明顯太小。
(B) 1000 表示十進位值為 8
正確。
計算方式:
1000(二進位)
= 1×2³ + 0×2² + 0×2¹ + 0×2⁰
= 8
(C) 十進位的 -1 以 1111 表示
在「二補數」表示法中,4-bit 的 -1 = 1111
但題目前面寫:
「二進位的非負整數表示系統」
非負數系統 不表示負數!
1111 在非負整數系統下就是:
1×8 +1×4 +1×2 +1×1 = 15
所以此敘述 錯(題目限制是非負整數)。
(D) 010 與 10 所表示的十進位數值相同
正確。
因為前導 0 不影響值:
010(二進位) = 2
10(二進位) = 2
完全一樣,就像十進位的 007 = 7。
(E) 16 位元能夠表示的整數個數有 65536
正確。
因為:
n bits 可以表示的「所有可能組合」數 = 2ⁿ
16 bits → 2¹⁶ = 65536
如果是非負整數:
可表示的最大值 = 0 到 65535(共 65536 個數)
【延伸知識:你需要的完整圖表與公式】
1. bit、byte 的定義
-
1 bit:二進位一位(0 或 1)
-
1 byte = 8 bits
2. 二進位轉十進位(重要公式)
二進位 1011:
= 1×2³ + 0×2² + 1×2¹ + 1×2⁰
= 8 + 0 + 2 + 1
= 11
「每一位」都代表不同次方的 2(從右往左)。
3. n bit 可表示整數個數
公式:2ⁿ
例:
| 位元數 | 可表示的數字組合 | 最大非負值 |
|---|---|---|
| 4 bits | 2⁴ = 16 | 0~15 |
| 8 bits | 2⁸ = 256 | 0~255 |
| 16 bits | 2¹⁶ = 65536 | 0~65535 |
| 32 bits | 2³² | 0~4,294,967,295 |
4. 前導零(Leading Zero)不影響值
010 = 10(二進位)
007 = 7(十進位)
完全相同概念。
【記憶技巧】
一句話背起來:
最大值 = 全部 1
個數 = 2ⁿ
前導零不算值
非負不算負數。
【常見錯誤】
-
把「二補數」拿到「非負整數系統」使用(本題 C)
-
把「位元數」和「最大值」混淆(A)
-
忘記「2ⁿ 表示總個數」
-
忘記前導零不影響結果(D)