ある整数値を,負数を2の補数で表現する2進表記法で表すと最下位2ビットは“11”であった。10 進表記法の下で, その整数値を4で割ったときの余りに関する 記述として,適切なものはどれか。ここで,除算の商は,絶対値の小数点以下を切り捨てるものとする。
ア その整数値が正ならば3
イ その整数値が負ならば -3
ウ その整数値が負ならば3
エ その整数値の正負にかかわらず0
解説を読む
正解:ア
解説:
仮に4桁の数字であったとして問題文にあるように(0111)2を4で割る事を考えてみます。
(0111)2は10進数にすると7ですので
7÷4=1…3
となり正の数のときに3余るということになりアが正解候補となります。
念の為5桁の場合も考えてみましょう。(01011)2を4で割ります。
(01011)2は10進数にすると11ですので
11÷4=2…3
やはり3余るので成立しそうです。
では、負数のときはどうでしょう?本問では負数を2の補数で表すとありますので4桁の負数で考えてみたいと思います。
(1011)2を4で割りたいと思いますが(1011)2は最上位ビットが1なので負数ということになります。10進数に変換する際には絶対値を取る必要があります。そのために2の補数を取ります。
(1011)2
(0100)2・・・各ビットを反転させ1の補数にします。
(0101)2・・・1を加えて2の補数にします。
(0101)2は10進数で5ですので(1011)2は-5だと分かりました。
-5÷4=-2…3
あれれ…これだとウも正解になってしまいます。他の桁でやっても(1xxxx11)2である以上、絶対値は(0xxxx01)2となり10進数に変換すると-5,-9,-13,-17,-21・・・これらの数を4で割るといずれも余りは3となります。
イは余りがマイナスになることはあり得ないので解答として不適格です。
エの正負に関わらず0も上記の計算で違っていることが分かります。
アかウで間違いはないと思うのですがIPAの公式解答ではアが正解となっていますので、表記上はアを正解としますが、個人的には「その整数値の正負にかかわらず3」ではないかと思うのですが・・・
私の問題解釈に誤りがあるかもしれませんのでさらに調べた上で上記解説は書き換えることがあるかもしれませんのでご了承ください。
解説を閉じる
コメント