2の補数表現の下位2ビットで余りはどう決まる?
基本情報技術者試験 平成30年度春期 午前 問1 / 基礎理論 › 離散数学
過去問にチャレンジ
ある整数値を,負数を2の補数で表現する2進表記法で表すと最下位2ビットは"11"であった。10進表記法の下で,その整数値を4で割ったときの余りに関する記述として,適切なものはどれか。ここで,除算の商は,絶対値の小数点以下を切り捨てるものとする。
- ア
その整数値が正ならば3
- イ
その整数値が負ならば-3
- ウ
その整数値が負ならば3
- エ
その整数値の正負にかかわらず0
会話形式の解説
講師まず、下位2ビットから4の倍数との差を見ます。負数では商の取り方も確かめましょう。
受験者「11」なら余りはいつでも3、と考えてよいのでしょうか。
講師正数なら、4の倍数に3を足した形なので余りは3です。この記述が適切です。
受験者負数でも同じ3になると思いましたが、商の条件が効くのですね。
講師はい。例えば−5も下位2ビットは「11」です。−5を4で割った商は、指定された切り捨て方では−1になります。
受験者すると、−5=4×(−1)+(−1)なので、余りは−1ですか。
講師そのとおりです。負数の余りを3とする記述も、−3とする記述も当てはまりません。
受験者−3ではなく−1になるのは、商を−1として計算するからですね。
講師はい。また、余りが0なら4で割り切れますが、下位2ビットが「11」の整数は4の倍数ではありません。
受験者正数の余りは3、負数の余りは−1で、どちらも0にはならないと整理できます。
講師迷ったら負数の例で商を0に近い整数にし、「整数=4×商+余り」で確かめましょう。
まとめ
下位2ビットが「11」の正数は、4の倍数に3を足した形なので、4で割った余りは3です。負数では、指定された方法で商を0に近い整数にすると、余りは−1になります。下位2ビットが「11」なら4の倍数ではないため、余りは0にもなりません。
解答・解説
正解はアです
この問題のテーマ
2の補数表現の下位2ビットから、4で割った余りを判断する問題です。負数では、指定された商の取り方に注意します。
解き方の考え方
下位2ビットが「11」の整数は、正負を問わず4で割った値が整数から4分の3だけずれる形で表せます。正数なら余りは3です。負数では商の絶対値の小数部分を切り捨てるため、余りは−1になります。
選択肢ごとの解説
- ○ア その整数値が正ならば3正数で下位2ビットが「11」なら、その値は4の倍数に3を足した形です。したがって、4で割った余りは3になります。
- ×イ その整数値が負ならば-3負数の場合、指定された除算の余りは−1です。例えば−5÷4の商は−1なので、−5=4×(−1)+(−1)となり、−3にはなりません。
- ×ウ その整数値が負ならば3負数を4で割るときは、商を0に近い整数へ切り捨てます。この条件で下位2ビットが「11」なら余りは−1であり、3ではありません。
- ×エ その整数値の正負にかかわらず0余りが0になるのは4で割り切れる場合です。下位2ビットが「11」の整数は4の倍数ではないため、正負にかかわらず0にはなりません。
POINT
- 下位2ビットが「11」なら、その整数は4の倍数ではありません。
- 正数で下位2ビットが「11」のとき、4で割った余りは3です。
- 商の小数部分を0方向に切り捨てると、負数で下位2ビットが「11」のときの余りは−1です。
