応用情報技術者試験 令和5年秋期 問4
図のように16ビットのデータを4×4の正方形状に並べ,行と列にパリティビットを付加することによって何ビットまでの誤りを訂正できるか。ここで,図の網掛け部分はパリティビットを表す。
ア:1 イ:2 ウ:3 エ:4
出典 IPA公開[過去問題]:https://www.ipa.go.jp/shiken/mondai-kaiotu/ps6vr70000010d6y-att/2023r05a_ap_am_qs.pdf
パリティビットとは
パソコンなどの機器同士でデータを送り合う場合、1ビットずつ送る方法(シリアルインタフェース)や数ビットまとめて送る方法(パラレルインタフェース)があります。その際、伝送ビットが誤って相手に届くことがあるのでその誤りを検知するための方法の1つ。横並びのビット列に対して検知ビットを付け加える「水平」、縦並びのビット列に対して検知ビットを付け加える「垂直」があります。また、ビット列の中に含まれる「1」の数を偶数に調整する「偶数ビット」と、奇数に調整する「奇数ビット」があります。
この問題では「水平」「垂直」の両方が使われており、1行目を見ると「1000」に対して「1」が付け加えられており、1列目を見ると「1001」に対して「0」が付け加えられていることから、偶数ビットが採用されています。
1行目
1列目
仮に受信したビット列の1行1列目のビットが0だった場合、次のようになります。
この場合、1行目の「1」の数がパリティビットを含めても奇数になります。また、1列目の「1」の数もパリティビットを含めても奇数になります。
「1」の数が偶数になるようにパリティビットが付け加えれているはずなので、1行目・1列目ともに間違っていると判断できます。そして、1行目・1列目が誤っていると分かったことでその2つがクロスする場所である1行目・1列目の左角のビットが誤っており、本来は「1」が正しいと訂正することができます。
正解は「ア:1」となります。
仮に次のように2ビットの誤りがあった場合、1行目の「1」の数がパリティビットを含めて偶数になっているので問題がありません。
2ビットの誤り
ただし、1列目と3列目は「1」の数がパリティビットを含めても奇数になってしまっていますが、1行目が誤っているのか、2行目が誤っているのか、3行目が誤っており野か、4行目が誤っているのか、誤り箇所を特定することができず、修正することができません。
※パリティビットに関する問題はそれほどパターンが多くありませんが、基礎的な「垂直水平パリティを使うことで1ビットの誤りの訂正を行うことができる」ということを押さえておくと良いでしょう。