ある整数値を,負数を2の補数で表現する2進表記法で表すと最下位2ビットは“11” であった。
10進表記法の下で,その整数値を4で割ったときの余りに関する記述として,適切なものはどれか。
ここで,除算の商は,絶対値の小数点以下を切り捨てるものとする。
正答1
解説
正解は1です。
2の補数表現の整数を4で割った余りを、正の場合と負の場合に分けて考える問題です。
最下位2ビットが“11”であることは、整数値が「4の倍数+3」の形であることを意味します。
ただし本問では商の小数点以下を絶対値で切り捨てるため、負数では余りが負の値になります。
【計算】
正の例として、7(2進数0111)÷4=1.75で、商は1です。
余りは7-4×1=3です。
負の例として、-1(8ビットで11111111)÷4=-0.25で、商は0です。
余りは-1-4×0=-1です。
負の例として、-5(8ビットで11111011)÷4=-1.25で、商は-1です。
余りは-5-4×(-1)=-1です。
【選択肢別解説】
1:○ 正の整数で下位2ビットが“11”なら、4の倍数に3を足した数なので余りは3です。
2:× 負の場合の余りは-3ではなく-1です。
例えば-1も-5も、余りは-1になります。
3:× 負の場合は商を0の方向へ切り捨てるため、余りは3ではなく-1になります。
4:× 4で割り切れるのは下位2ビットが“00”のときです。
“11”では余りは0になりません。
【ポイント】
2の補数でも、下位nビットは2のn乗で割った数学的な剰余を表します。
商を0の方向に切り捨てる除算では、余りの符号は割られる数と同じになると覚えておきましょう。