公司动态

用 n 个二进制位表示的带符号整数,通常采用**补码表示法**(这是现代计算机的标准)

📅 2026/7/27 7:44:03
用 n 个二进制位表示的带符号整数,通常采用**补码表示法**(这是现代计算机的标准)
用 n 个二进制位表示的带符号整数通常采用补码表示法这是现代计算机的标准。在补码中最高位第 n 位即最高位索引为 n−1是符号位0 表示正数或零1 表示负数可表示的整数范围是−2^(n−1) 到 2^(n−1) − 1含两端因此最大值是 2^(n−1) − 1。例如n 8 时范围是 −128 到 127最大值为 127 2⁷ − 1n 4 时范围是 −8 到 7最大值为 7 2³ − 1。选项中 A 和 C 重复均为 2^(n−1)B 是 2^n无符号最大值D 是 2^(n−1)−1 —— 正确。✅ 答案D因为在补码表示法中0 被唯一地表示为全 0如 8 位为00000000不占用负数编码空间且符号位参与数值计算使得负数多出一个编码位置。具体原因如下✅1. 0 只有一种表示原码和反码中0 和 −0 是两种不同编码如 8 位原码00000000和10000000浪费了一个编码补码中00000000表示 0而10000000被定义为 −128n8 时没有 −0 的冗余表示从而“腾出”一个编码给负数。✅2. 编码空间对称但偏移n 位二进制共有 2ⁿ 个不同编码。补码将它们映射为连续整数编码000...000→ 0000...001→ 1…011...111→ 2^(n−1)−1最大正数100...000→ −2^(n−1)最小负数即“最负值”111...111→ −1可见正数个数从 1 到 2^(n−1)−1 → 共 2^(n−1)−1 个零1 个负数个数从 −1 到 −2^(n−1) → 共 2^(n−1) 个→ 负数比正数多一个多出 −2^(n−1) 这个数。✅3. 数学本质模运算一致性补码本质是模 2ⁿ 运算下的等价类x 的补码 ≡ x (mod 2ⁿ)且约定在 [−2^(n−1), 2^(n−1)−1] 内取代表元。该区间长度为 2ⁿ且关于 0不对称因 0 居左端1位置自然导致负数端多一个。简言之零占一位、无−0、模运算截断方式决定负数范围向下延伸一位。