基本情報技術者 2018年 春期 午前(科目A) 問01
問題文
ある整数値を、負数を2の補数で表現する2進表記法で表すと最下位2ビットは“11“であった。10進表記法の下で、その整数値を4で割ったときの余りに関する記述として、適切なものはどれか。ここで、除算の商は、絶対値の小数点以下を切り捨てるものとする。
選択肢
ア:その整数値が正ならば3(正解)
イ:その整数値が負ならば-3
ウ:その整数値が負ならば3
エ:その整数値の正負にかかわらず0
🔒 解説は解答すると表示されます
2の補数表現と剰余の関係【午前解説】
正解の理由
最下位2ビットが“11”であることは、その整数 が次を満たすことを意味します。
この表現で (すなわち が正)ならば、4で割った余りは明らかに です。問題文の除算規定は「商を絶対値で小数点以下を切り捨てる(=0 方向に切り捨てる)」なので、正のときの余りは通常どおり の範囲で求まります。したがって選択肢の中では「ア: その整数値が正ならば3」が正解です。
この表現で (すなわち が正)ならば、4で割った余りは明らかに です。問題文の除算規定は「商を絶対値で小数点以下を切り捨てる(=0 方向に切り捨てる)」なので、正のときの余りは通常どおり の範囲で求まります。したがって選択肢の中では「ア: その整数値が正ならば3」が正解です。
解法ステップ
- 問:最下位2ビットが“11” → その整数を とおく。
- 下位2ビットが示す値は 。すなわち と表せる。
- の場合( が正)に4で割った余りは 。問題の商の取り方に注意して結論を確認する。
- ( が負)の場合、問題の商の定義(絶対値で小数点以下切り捨て)を適用すると余りは となり、選択肢のイ・ウ・エと矛盾する。
選択肢別の誤答解説
- ア: その整数値が正ならば3 — 正解。下位2ビット“11”は を意味し、正の場合の余りは3になる。
- イ: その整数値が負ならば-3 — 誤り。負で下位2ビットが“11”の例()を試すと、問題の商の取り方では余りは になる。
- ウ: その整数値が負ならば3 — 誤り。負数であっても同値類としては に合同だが、商の取り方次第で質問の「余り」は符号付きで になり得るため不適。
- エ: その整数値の正負にかかわらず0 — 誤り。下位2ビットが“00”の場合のみ余り0であるが、“11”では明らかに0ではない。
よくある誤解
- 「2の補数の下位ビット=そのまま余り」という直感は正しいが、負数での余りの定義(符号)が問題となる点を見落とす。
- 除算の商を「下方向(負の方向)へ切り捨てる(floor)」と解釈してしまうと、負の数の余りが異なる答えになりやすい。
- 最下位ビットだけで符号を判断して「負なら−3」という誤った短絡をしがちである。
補足コラム
- 2の補数表現と剰余:Nビット幅であっても、任意の整数 の下位 ビットは を与えます。したがって下位2ビットは を直接示します。
- 余りの定義には注意:数学的な剰余(非負の余り)とプログラミングでの負数扱い、あるいは「商の切り方(floor, trunc)」で異なる結果になるため、問題文の規定を必ず確認してください。
- 実例:(111)の下位2ビットは11 → で余り3。(…11111011)の下位2ビットも11 → だが商を問題文のように取ると余りは 。
簡単な Python 実験(商を「0方向に切り捨てる」場合):
def trunc_div_remainder(x, d):
q = int(abs(x)/d) * (1 if x>=0 else -1)
r = x - q*d
return q, r
print(trunc_div_remainder(7,4)) # (1, 3)
print(trunc_div_remainder(-5,4)) # (-1, -1)
FAQ
Q. 「最下位ビットが11」は負を意味しませんか?
A. 下位2ビットだけでは符号はわかりません。符号は最上位ビット(符号ビット)で判定します。下位ビットは での剰余を示します。
A. 下位2ビットだけでは符号はわかりません。符号は最上位ビット(符号ビット)で判定します。下位ビットは での剰余を示します。
Q. 商を floor(小さい方へ切り捨て)で取るとどうなりますか?
A. floor を採用すると負数の商が異なり、例えば を4で割ると floor なら商 , 余り になります。問題文の規定があるため、どちらを使うか注意が必要です。
A. floor を採用すると負数の商が異なり、例えば を4で割ると floor なら商 , 余り になります。問題文の規定があるため、どちらを使うか注意が必要です。
Q. 幅(ビット数)が指定されていないときはどう解釈する?
A. 幅に依らず下位2ビットは を決めるため、余り議論は同じです。
A. 幅に依らず下位2ビットは を決めるため、余り議論は同じです。
関連キーワード: 2の補数、ビット、下位2ビット、剰余、余り、切り捨て、符号付き整数、モジュロ、除算の定義

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

