問 題
コンピュータが扱う数値データに関する次の記述の㋐~㋔に当てはまるものの組合せとして最も妥当なのはどれか。
「2 進数の補数には次の二つがある。
1 の補数:各桁の0 と1 を反転したもの
2 の補数: 1 の補数に1 を加算したもの
コンピュータで負の数を表すために,補数が使われる。00… 0 の㋐は00… 0 であるから,負の数を表すのに㋐を使うとき,ゼロは00… 0 と一意に表される。
一方,00… 0 の㋑は11… 1 であるから,負の数を表すのに㋑を使うとき,ゼロは00… 0 と11… 1 の2 通りで表され得る。
また,ビット長が同じなら㋐を使うときの方が㋑を使うときよりも表現できる数が一つ多い。このような特長から,現在のコンピュータでは㋐を使うものが多い。
㋐を用いると,加算処理で減算ができる。例えば,コンピュータが4 ビット2 進数について
0111 -0001 を計算するには,0111 と,0001 の㋐である㋒とを加算する。すなわち,この減算は
0111
+ ㋒
ーー
1 ㋓
という加算により計算でき, ㋓を10 進数で表すと㋔となる。」
/ | ㋐ | ㋑ | ㋒ | ㋓ | ㋔ |
1. | 1 の補数 | 2 の補数 | 1110 | 0101 | 5 |
2. | 1 の補数 | 2 の補数 | 1111 | 0110 | 6 |
3. | 2 の補数 | 1 の補数 | 1101 | 0100 | 4 |
4. | 2 の補数 | 1 の補数 | 1110 | 0101 | 5 |
5. | 2 の補数 | 1 の補数 | 1111 | 0110 | 6 |
解 説
㋐ですが
1の補数であったとすれば、0 と 1 反転なので、00… 0 → 11… 1 となるはずです。よって、㋐は 1 の補数ではありません。「2 の補数」です。正解は 3~5 です。
㋒ですが
0001 の 2 の補数を求めればよい、という問題です。まず 0 と 1 を反転すると 1110 です。これに 1 加えるので 1111 です。㋒は「1111」です。
㋓ですが 0111 + 1111 なので 10110 です。
㋓ は「0110」です。
㋔ですが
元の桁数よりも多い桁の部分は「あふれ」です。ここは読みません。つまり 10110 → 0110 と考えます。すると、右側から 20 × 0 + 21 × 1 + 22 × 1 + 23 × 0 = 2 + 4 = 6 です。㋔は「6」です。
以上より、正解は 5 です。
コメント