基本情報技術者試験 平成30年 午前問1 解説
基本情報技術者試験午前の解説をしていきます。
問1 ある整数値を,負数を2の補数で表現する2進表記法で表すと最下位2ビットは”11″であった。10進表記法の下で,その整数値を4で割ったときの余りに関する記述として,適切なものはどれか。ここで,除算の商は,絶対値の小数点以下を切り捨てるものとする。
ア その整数値が正ならば3
イ その整数値が負ならば-3
ウ その整数値が負ならば3
エ その整数値の正負にかかわらず0
解答:ア
解説:
2の補数とは、2進表記の値の各ビットを反転したものに1ビット追加したものです。
例えば、
「110010」という2進数があったとき、ビットを反転すると
↓
「001101」となり、さらに1ビット追加すると
↓
「001110」となります。
さて、問題の整数値が負の数であった場合、上記の流れを逆に考えて、最下位2ビットが「11」なので、
「—11」となります。ここから「1ビット引く」と、
↓
「—10」となり、このビットを反転すると
↓
「—01」となります。
問題の整数値が正の数であった場合、補数表現で表す必要はないので、最下位2ビットが「11」の正の数といえます。
ここで、11が最下位2ビットであるという意味を考えましょう。
11は10進数に直すと「3」です。
3ビット目以降は2の2乗、3乗、4乗・・・の位ですので、全て4(2の2乗)で割り切れます。
つまり最下位2ビットの値が4で割ったときの余りになるわけです。
「除算の商は、絶対値の小数点以下を切り捨てる」わけですから、
正の数であれば最下位2ビット11を10進変換した「3」が余りとなり、・・・「選択肢ア」
負の数であれば最下位2ビット01を10進変換した「1」が余りとなるわけです。
つまり、「ア」が正解となります。