跳到正文

平成24年度 秋期 ITパスポート試験 問93

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

問93
頻出度★★☆

図1は,8×8画素の白黒の画像例である。この図に対して,白を0,黒を1として表すと,図2に示すように8ビットのビット列が8行あるディジタルデータとして,画像データを表現することができる。 文字データしか送れない通信で画像データを送ろうとする場合,画像データを文字データであるかのように変換して通信する必要がある。 また,文字データと比べてデータ量の大きい画像データを効率よく通信するために,データを圧縮して送るという工夫がなされる。図2のビット列を左上から順に見ていくと,0が10個続き,次に1が34個続き,その次に0が20個続いていることが分かる。この同じ値が続く個数のことをランレングスという。これを利用して画像データを圧縮する方法を考える。 次に示す画像データの表現方法は,画像データを文字データに変換するものである。図2の画像データの中の 9~12 ビット(2行目の先頭4ビット)のビット列は,どの文字として表現されるか。 〔画像データの表現方法〕 (1) 画像データのビット列を4ビットずつ取り出し,それぞれの先頭に4ビットの値“0100”を補い,8ビットで表現する。 (2) (1)で求めた各8ビットの値を JIS X 0201 の文字コードに対応する文字で表現する。01000000, 01000001, 01000010, …, 01001111 の8ビットの値は,JIS X 0201 の文字コード体系では,文字@, A, B, …, O に対応する。

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

問 93

  • 错误ア

    @ 是 01000000,也就是低 4 比特为 0000 时所对应的字符。在图 2 中变成 0000 的,是第 1 行(第 1~4 比特或第 5~8 比特)以及第 7 行、第 8 行那样只排列着白色像素的 4 比特,而不是第 9~12 比特。把第 9~12 比特读成 0000,是没注意到第 2 行以 00111111 开头、直接把第 1 行的值当作答案的错误。

  • 错误イ

    B 是 01000010,低 4 比特为 0010。图 2 第 2 行开头的 4 比特是 0011,而不是 0010。本应把 @ 当作第 0 个来数,却把 @ 当成第 1 个,从而选到前一个字符(0011 是十进制的 3,却把它数成第 3 个的 B),这是典型的错误;需要确认对应表是从 01000000 = @ 开始的,也就是从 0 开始计数这一点。

  • ウ

    正解 图 2 是把图 1 的 8×8 像素图像按照白=0、黑=1,以每行 8 比特、共 8 行的形式表示出来的比特串。实际的排列从上到下依次为 00000000 / 00111111 / 11111111 / 11111111 / 11111111 / 11110000 / 00000000 / 00000000。比特是从左上角开始依次计数的,所以第 1 行是第 1~8 比特、第 2 行是第 9~16 比特,题目所问的第 9~12 比特(第 2 行开头的 4 比特)就是 0011。对它套用表示方法 (1),在开头补上 0100,就得到 01000011 这个 8 比特的值。表示方法 (2) 给出的对应关系是:01000000 为 @,值每增加 1 就依次前进为 A、B、C、…、O。也就是说,把低 4 比特当作二进制数读出的值,正好表示从 @ 往后数第几个字符。0011 是十进制的 3,因此按 @(0)、A(1)、B(2)、C(3)数下去就得到 C。所以正确答案是 ウ 的 C。这种方式是把只由 0 和 1 组成的图像数据每 4 比特切分一组、替换成可打印字符,从而让只能传送字符数据的通信线路也能传送图像,其思路与 Base64 等实用编码方式相同。

  • 错误エ

    O 是 01001111,低 4 比特为 1111。在图 2 中变成 1111 的,是第 3~5 行那样黑色像素连续排列的部分,第 9~12 比特并不属于此。把第 9~12 比特读成 1111,是在看漏了第 2 行开头的 2 个白色像素(00)、误认为该行全是黑色像素时,或者把比特的计数起点错当成第 2 行而不是第 1 行、从而数错位时会发生的错误。

ここがポイント
  • 黑白二值图像的数字化:把每个像素对应为白=0、黑=1 的 1 个比特,从左上角开始按行方向排列就得到比特串。「第几比特」是把整幅图像从左上角开始连续编号来数的,所以 8×8 像素时,第 9~12 比特就相当于第 2 行开头的 4 比特。
  • 把比特串转换为字符的编码:取出 4 比特,在其前面补上固定的高位比特(这里是 0100),再对应到字符编码表中连续排列的字符。若把 01000000 = @ 当作 0,那么低 4 比特的二进制数值就直接是相对 @ 的偏移量(0=@、1=A、2=B、3=C、…、15=O)。这是为了在只能传送字符的通信线路上传送图像而产生的思路,与 Base64 属于同一类。
用語
解答問93ウ
练这一题

作答记录