No.123 ある整数値を,負数を2の補数で表現する2進表記法で表すと最下位2ビットは"11"であった。
10進表記法の下で,その整数値を4で割ったときの余りに関する記述として,適切なものはどれか。
ここで,除算の商は,絶対値の小数点以下を切り捨てるものとする。
10進表記法の下で,その整数値を4で割ったときの余りに関する記述として,適切なものはどれか。
ここで,除算の商は,絶対値の小数点以下を切り捨てるものとする。
⭕️
❌
💾
🖊 | ☑️ |
⭕️ | [[ AnswerCalc[0] ]] % | A | [[ AnswerCalc[1] ]] |
設問では「ある整数値を…2進数記法で表すと最下位ビットが"11"であった。」としていますが、最下位2ビットが"11"となる整数値の特徴は正負によって異なります。
[正の数の場合]
正の数に対しては2の補数を適用しないので、2進数表現 xx…x11 をそのまま10進数に直すことを考えます(xは任意のビット)。最下位2ビットが"11"となる正の数は、
[負の数の場合]
2の補数に変換したときと逆の手順で、その負数の絶対値を示すビット列を求めます。
以上より、最下位2ビットが"11"である整数値を4で割った余りは、その整数値が正ならば3、負ならば-1になります。よって「ア」の記述のみが適切です。
[正の数の場合]
正の数に対しては2の補数を適用しないので、2進数表現 xx…x11 をそのまま10進数に直すことを考えます(xは任意のビット)。最下位2ビットが"11"となる正の数は、
- 111(2) → 7(10)
- 1011(2) → 11(10)
- 10111(2) → 23(10)
- 110011(2) → 51(10)
[負の数の場合]
2の補数に変換したときと逆の手順で、その負数の絶対値を示すビット列を求めます。
- 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の補数に変換します。- -10の絶対値である10を2進数に直す。
10(10) → 1010(2) - 1010(2)の全ビットを反転させる。
1010(2) → 0101(2) - ②の結果に1を加える。
0101(2) → 0110(2)
- -10の絶対値である10を2進数に直す。
💾
✔️
[[ d.CommentTxt ]] |
< | > |
🥇 |