跳到正文

平成24年度 春期 ITパスポート試験 問52

这道题的解析和你的作答记录。

問52
頻出度★★☆

負の整数を2の補数で表現するとき,8桁の2進数で表現できる数値の範囲を10進数で表したものはどれか。

出典 平成24年度 春期 ITパスポート試験 問52
解説

問 52

  • 错误ア

    −256 ~ 255 合计要表示 512 个数值,是 8 位所能区分的 256 种的 2 倍。这是把 2^8 = 256 这个「种类数」直接当成范围端点数值的错误,8 位根本表示不了这么大的范围。

  • 错误イ

    −255 ~ 256 同样合计有 512 个数值,超出了 8 位的表示能力(256 种)。而且在 2 的补数中,正数的最大值是 2^(n−1)−1 = 127,像 256 这样的值不可能成为正数一侧的上限。

  • ウ

    正解 8 位(8 比特)的二进制数所能构成的位模式共有 2^8 = 256 种。在 2 的补数表示法中,最高位被当作符号位处理:最高位为 0 的模式(00000000 ~ 01111111)表示 0 ~ 127,最高位为 1 的模式(10000000 ~ 11111111)表示 −128 ~ −1。因此能够表示的数值范围是 −128 ~ 127,所以选项 ウ 正确。一般来说,n 位的 2 的补数所能表示的范围是 −2^(n−1) ~ 2^(n−1)−1,代入 n=8 即为从 −2^7 = −128 到 2^7−1 = 127。由于 0 只有一种表示方式,负数一侧比正数一侧多 1 个,形成不对称的范围,这正是它的特点。

  • 错误エ

    −127 ~ 128 的个数确实是 256 个,没错,但不对称的方向反了。在 2 的补数中 10000000 表示 −128,所以是负数一侧多 1 个;反过来,+128 无法用 8 位的 2 的补数表示(要表示 +128 需要 9 位)。

ここがポイント
  • n 位 2 的补数表示法所能表示的范围是 −2^(n−1) ~ 2^(n−1)−1。8 位时为 −128 ~ 127,16 位时为 −32768 ~ 32767。
  • 在 2 的补数中 0 只有一种表示方式,因此能表示的负数比正数多 1 个,范围是不对称的(最高位表示符号)。
用語
解答問52ウ
练这一题

作答记录