チェックデジットの計算手順と基数から余りを引く意味
基本情報技術者試験 平成29年度秋期 午前 問24 / ユーザーインタフェース › UX/UIデザイン
過去問にチャレンジ
次の方式によって求められるチェックデジットを付加した結果はどれか。ここで、データを7394、重み付け定数を1234、基数を11とする。 〔方式〕 (1) データと重み付け定数の、対応する桁ごとの積を求め、それらの和を求める。 (2) 和を基数で割って、余りを求める。 (3) 基数から余りを減じ、その結果の1の位をチェックデジットとしてデータの末尾に付加する。
- ア
73940
- イ
73941
- ウ
73944
- エ
73947
会話形式の解説
講師今回はチェックデジットの計算です。チェックデジットは、データから決まった計算で求めて末尾に付け加える検査用の数字です。問題文の方式には3つの手順があるので、1つずつそのまま計算していきましょう。
受験者計算問題は時間がかかりがちなので、手順を順番に追ってみます。まず(1)ですが、データの7394と重み付け定数の1234は、どの桁どうしを掛ければよいのでしょうか。
講師対応する桁どうし、つまり上の桁は上の桁と、下の桁は下の桁と組にします。データの1桁目の7には重みの1、次の3には2、という並びです。
受験者そうすると、7×1=7、3×2=6、9×3=27、4×4=16です。和は7+6+27+16で56になります。
講師そのとおりです。次は(2)の手順です。和を基数、ここでは11で割ったときの余りを求めます。
受験者56÷11は商が5で、11×5=55なので余りは1です。チェックデジットは1だから、末尾に1を付けた73941でしょうか。
講師そこが一番の引っかけです。手順はまだ(3)が残っています。(3)では何をすると書かれているでしょうか。
受験者基数から余りを減じる、とあります。11−1で10です。でも10は2桁なので、1桁のチェックデジットにはできない気がします。
講師その点も方式に書かれています。結果の1の位をチェックデジットにする、という指定です。10の1の位は何になりますか。
受験者0です。だから7394の末尾に0を付けて、73940になります。余りの1をそのまま付けた73941は、(3)の引き算を飛ばした答えということですね。
講師そうです。残りの73944と73947は、チェックデジットを4や7としていますが、余りが1である以上、11−1=10の1の位からは0しか出てきません。手順どおりに計算すると、4や7が出てくる途中経過はありません。
受験者検算もしておきます。11×5+1=56で、和と合っています。積の和、余り、基数から引く、1の位を取る、の4段階を順に確かめれば迷わないと分かりました。
講師よく整理できています。チェックデジットの問題は方式が問題ごとに少しずつ違うので、覚えた手順ではなく、問題文の〔方式〕を1行ずつ読んで計算するのが確実です。特に「基数から余りを引く」手順があるときは余りそのものは答えにならないこと、引いた結果が2桁になったら指定に従って1の位だけを使うことに注意してください。なお、受け取った側が同じ計算をやり直して付いている数字と照らし合わせることで、入力ミスを見つけられます。これがチェックデジットの役割です。
まとめ
データ7394と重み付け定数1234の対応する桁どうしを掛けると、7、6、27、16で、和は56になります。56を基数11で割った余りは1です。基数から余りを引くと11−1=10となり、その1の位の0がチェックデジットなので、答えは73940です。余りの1をそのまま付ける誤りや、引いた結果が2桁になったときの扱いに注意し、問題文の方式を1手順ずつ計算することが大切です。
解答・解説
正解はアです
この問題のテーマ
重み付け定数と基数11を使うチェックデジットを、示された3つの手順どおりに計算できるかを問う問題です。
解き方の考え方
データの各桁と重み付け定数の各桁を、上の桁から順に組にして掛け合わせます。7×1=7、3×2=6、9×3=27、4×4=16で、和は7+6+27+16=56です。56÷11は商5、余り1です。基数から余りを引くと11−1=10になり、その1の位の0がチェックデジットです。データの末尾に付けると73940になり、正解のアと一致します(検算:11×5+1=56)。
選択肢ごとの解説
- ○ア 7394073940は、手順(3)で得た10の1の位である0をデータ7394の末尾に付けた値です。手順(1)〜(3)を順に計算した結果と一致します。
- ×イ 7394173941はチェックデジットを1としています。1は手順(2)の余りそのものですが、手順(3)では基数11からこの余りを引いて10とし、その1の位を使います。そのため、チェックデジットは1ではなく0になります。
- ×ウ 7394473944はチェックデジットを4としています。基数11を使って計算すると、積の和56の余りは1で、11−1=10の1の位は0です。手順どおりに計算しても4は出てきません。
- ×エ 7394773947はチェックデジットを7としています。正しい手順では余りが1なので、基数から引いた値は10、チェックデジットは0になります。余り1から7は導けません。
補足
チェックデジットは、データから決まった計算で求めて付け加える検査用の数字です。入力を受けた側が同じ計算をやり直し、付いている数字と一致するかを照らし合わせることで、入力ミスを見つけられます。
POINT
- チェックデジットの問題は、問題文の〔方式〕を1手順ずつそのまま計算すれば解けます。
- 重みは上の桁どうし、下の桁どうしのように、対応する桁で掛け合わせます。
- 「基数から余りを引く」手順がある方式では、余りそのものはチェックデジットになりません。
- 引き算の結果が2桁(この問題では10)になったら、方式の指定に従って1の位だけを使います。
