平成30年春期試験問題 午前問1
問1解説へ
ある整数値を,負数を2の補数で表現する2進表記法で表すと最下位2ビットは"11"であった。10進表記法の下で,その整数値を4で割ったときの余りに関する記述として,適切なものはどれか。ここで,除算の商は,絶対値の小数点以下を切り捨てるものとする。
- その整数値が正ならば3
- その整数値が負ならば-3
- その整数値が負ならば3
- その整数値の正負にかかわらず0
広告
解説
設問では「ある整数値を,…2進数記法で表すと最下位ビットが"11"であった」としています。最下位2ビットが"11"となる整数値の特徴は正負によって異なるので、場合分けして考えます。
【正の数】
正の数には2の補数を使わないので、2進数の形「xx…x11」をそのまま10進数に直すことを考えます(xはどんなビットでも構いません)。いくつか例を挙げて説明します。
【負の数】
負の数を2の補数に変換するときと反対の手順で、2の補数で表現された「xx…x11」の絶対値を表すビット列を求めます。
以上より、最下位2ビットが"11"である整数値を4で割った余りは、その整数値が正ならば3、負ならば-1と結論付けられます。したがって「ア」の記述が適切です。
【2の補数】
2進数で負数を表現する方法の一つです。ある負の数を2の補数で表すには、①その負の数の絶対値を2進数に直し、②すべてのビットを反転して、③その結果に1を加えます。
例)10進数表記の -10 は以下の手順で2の補数に変換します(8ビットの固定小数点数)。
【正の数】
正の数には2の補数を使わないので、2進数の形「xx…x11」をそのまま10進数に直すことを考えます(xはどんなビットでも構いません)。いくつか例を挙げて説明します。
- 111(2) → 7(10)
- 1011(2) → 11(10)
- 10111(2) → 23(10)
- 110011(2) → 51(10)
【負の数】
負の数を2の補数に変換するときと反対の手順で、2の補数で表現された「xx…x11」の絶対値を表すビット列を求めます。
- xx…x11 から1を引く。
xx…x10 - 全てのビットを反転させる。
xx…x01 //絶対値の2進数表現
- 101(2) → (絶対値)5(10) → (負数)-5(10)
- 1001(2) → (絶対値)9(10) → (負数)-9(10)
- 10101(2) → (絶対値)21(10) → (負数)-21(10)
- 110001(2) → (絶対値)49(10) → (負数)-49(10)
- -5÷4=-1.25 → 絶対値の小数点以下を切り捨てると商は-1
商が-1ならば余りは-1 - -9÷4=-2.25 → 絶対値の小数点以下を切り捨てると商は-2
商が-2ならば余りは-1
以上より、最下位2ビットが"11"である整数値を4で割った余りは、その整数値が正ならば3、負ならば-1と結論付けられます。したがって「ア」の記述が適切です。
【2の補数】
2進数で負数を表現する方法の一つです。ある負の数を2の補数で表すには、①その負の数の絶対値を2進数に直し、②すべてのビットを反転して、③その結果に1を加えます。
例)10進数表記の -10 は以下の手順で2の補数に変換します(8ビットの固定小数点数)。
- -10の絶対値である10を2進数に直す。
10(10) → 00001010(2) - 00001010(2)の全ビットを反転させる。
00001010(2) → 11110101(2) - ②の結果に1を加える。
11110101(2) → 11110110(2)
広告