No.98 負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち,4倍するとあふれが生じるものはどれか。
⭕️
❌
💾
🖊 | ☑️ |
⭕️ | [[ AnswerCalc[0] ]] % | A | [[ AnswerCalc[1] ]] |
16ビットの数値表現では、216種類の数字を表わせます。符号なし(正の数のみ)では0~65535、符号付き(正&負)では -32768~32767 までの数値表現することができます。
(-32768~32767= -216-1 ~216-1 -1)
まずは、16進法で表示されているものを2進数に変換してみましょう。
1FFF→0001111111111111
DFFF→1101111111111111
E000→1110000000000000
FFFF→1111111111111111
符号付き16ビットでは、先頭ビットが符号ビット、下位15ビットの値が絶対値を表します。先頭ビットが0の場合は0~32767、1の場合は -32768~-1を表現します。
4つの中では「ア」が正の数、「イ」「ウ」「エ」が負の数を表しているということになります。
「イ」「ウ」「エ」は、2の補数で表されている負数です。2の補数表現はもう一度反転させて1を加える処理を行うと、元の値に戻る性質があります。これを使ってそれぞれの負数の絶対値を求めます。
正の数なのでそのまま→0001111111111111
1101111111111111→0010000000000001
1110000000000000→0010000000000000
1111111111111111→0000000000000001
これらを4倍してみます。4倍なので左に2ビット分シフトさせます。
0001111111111111→0111111111111100
0010000000000001→1000000000000100
0010000000000000→1000000000000000
0000000000000001→0000000000000100
(-32768~32767= -216-1 ~216-1 -1)
まずは、16進法で表示されているものを2進数に変換してみましょう。
1FFF→0001111111111111
DFFF→1101111111111111
E000→1110000000000000
FFFF→1111111111111111
符号付き16ビットでは、先頭ビットが符号ビット、下位15ビットの値が絶対値を表します。先頭ビットが0の場合は0~32767、1の場合は -32768~-1を表現します。
4つの中では「ア」が正の数、「イ」「ウ」「エ」が負の数を表しているということになります。
「イ」「ウ」「エ」は、2の補数で表されている負数です。2の補数表現はもう一度反転させて1を加える処理を行うと、元の値に戻る性質があります。これを使ってそれぞれの負数の絶対値を求めます。
正の数なのでそのまま→0001111111111111
1101111111111111→0010000000000001
1110000000000000→0010000000000000
1111111111111111→0000000000000001
これらを4倍してみます。4倍なので左に2ビット分シフトさせます。
0001111111111111→0111111111111100
0010000000000001→1000000000000100
0010000000000000→1000000000000000
0000000000000001→0000000000000100
- 1FFF
絶対値は32764です。符号付き16ビットで表現できる範囲内なので、あふれは生じません。 - DFFF
正しい。絶対値が32772です。元は負数なので-32772となり、符号付き16ビットで表現できる範囲を超えてしまっているため、あふれが生じます。 - E000
絶対値は32768です。元は負数なので-32768となり、あふれは生じません。符号付き16ビットで表現できる最も小さい値です。 - FFFF
絶対値は4です。あふれは生じません。2の補数表現で、すべてのビットが1である数値が表現しているのは-1であることを覚えておきましょう。
💾
✔️
[[ d.CommentTxt ]] |
< | > |
🥇 |