アットウィキロゴ

コンピュータサイエンス

小テスト第1回目

問題1

8ビットの2進数11010000を右に2ビットシフトしたものを、00010100から減じた値はどれか。
ここで、負の数は2の補数表現によるものとする。
ア. 00001000、 イ. 00011111、 ウ. 00100000、 エ. 11100000
答え、ウ

解説

11010000を右に2ビットシフトするので
追加→1111010000←削除

さらに上記の値を00010100から引くために、負の数にする
(上記の数値から00010100を引くとエへのミスリードになるので注意)
00010100
↓1の補数表現(1と0を反転)
11101011
↓2の補数表現(最後尾に1を足す)
11101100

この値が負の数となっているため、00010100を足す
   11101100
+00010100
=00100000(←ウと一致)


問題2

負の整数を表現する代表的な方法として、次の3種類がある。
a 1の補数による表現
b 2の補数による表現
c 絶対値に符号を付けた表現(左端ビットが0の場合は正、1の場合は負)
4ビットのパターン1101をa~cの方法で表現したものと解釈したとき、値が小さい順になるように三つの方法を並べたものはどれか。
ア. a,c,b、 イ. b,a,c、 ウ. b,c,a、 エ. c,b,a
答え、エ

解説

問題の1101が負の数扱いとなっているので、それぞれの解釈方法を逆算して正の数で表す。
a 1の補数による表現
1の補数表現では1と0を反転させるだけなので
1101→0010
10進数で2

b 2の補数による表現
2の補数表現は1の補数を行った後に最後尾に1を足すので
1101→0010→0011
10進数で3

c 絶対値に符号を付けた表現(左端ビットが0の場合は正、1の場合は負)
絶対値表現より、左端の数字が符号扱いになっている。
(符号→)1101
符号部分を0に変えるだけなので
1101→0101
10進数で5

以上より、正の数で表したとき大きい順にならべるとc,b,a
これを負の数として小さい順にならべるので、答えもc,b,aとなる。


問題3

実数aをa=f×reと表す浮動小数表記に関する記述として、適切なものはどれか。
ア. fを仮数、eを指数、rを基数という
イ. fを基数、eを仮数、rを指数という
ウ. fを基数、eを指数、rを仮数という
エ. fを指数、eを基数、rを仮数という
答え、ア


問題4

16進少数0.FEDCを4倍したものはどれか。
ア. 1.FDB8、 イ. 2.FB78、 ウ. 3.FB70、 エ. F.EDC0
答え、ウ

解説

4倍=22より右に2ビットシフトすればよい。

まず、0.FEDCを16進数から2進数に変換するが
16進数→10進数→2進数と変換しなくても、16進数の各値を2ビット表記して連結させるだけで変換できる。
F→1111、E→1110、D→1101、C→1100より、
0.1111 1110 1101 1100となる。
ここで右に2ビットシフトすると
11.1111 1011 0111 0000となる。(ここで整数部分は11だからこの時点で解答がウだと分かる)
これをまた16進数で表すと
3.FB70となる。


問題5

10進数の0.6875を2進数で表したものはどれか。
ア. 0.1001、 イ. 0.1011、 ウ. 0.1101、 エ. 0.1111
答え、イ

解説

2×0.6875= 1.375 ・・・ 整数部: 1
2×0.375= 0.75 ・・・ 整数部: 0
2×0.75= 1.5 ・・・ 整数部: 1
2×0.5= 1.0 ・・・ 整数部: 1
以上より、整数部を下から表示して1011
よって2進数表記で0.1011となる。


問題6

2進数の1.1011と1.1101を加算した結果を10進数で表したものはどれか。
ア. 3.1、 イ. 3.375、 ウ. 3.5、 エ. 3.8
答え、ウ

解説

まず2つの数値を足してから10進数に変換する。
   1.1011
+1.1101
=11.1000
整数部11は10進数では3、0.1は10進数で0.5だから答えは3.5となる。


問題7

2の補数で表された負数10101110の絶対値はどれか。
ア. 01010000、 イ. 01010001、 ウ. 01010010、 エ. 01010011
答え、ウ

解説

問題は負数10101110を正数にしたらどれか、ということを聞かれているので、2の補数で正数にする。
10101110
↓1の補数(1と0を反転)
01010001
↓2の補数(最後尾に1を足す)
01010010←答え


問題8

多くのコンピュータが、演算回路を簡単にするために補数を用いている理由はどれか。
ア、 加算を減算で処理できる。
イ、 減算を加算で処理できる。
ウ、 乗算を加算の組合せで処理できる。
エ、 除算を減算の組合せで処理できる。
答え、ア
※この解答は編集者の確認ミスの可能性があります…たぶんイやと思います


問題9

1バイトのデータで0のビット数が等しいもののうち、符号なしの2進数整数として見たときに最大となるものを、
10進整数として表したものはどれか。
ア. 120、 イ. 127、 ウ. 170、 エ. 240
答え、エ

解説

問題より、1バイトのデータから8ビット表示、さらに符号なしだから8ビット目も数値扱いである。
アの120を2進数で表すと
120÷2= 60 ・・・ 余り 0
60÷2= 30 ・・・ 余り 0
30÷2= 15 ・・・ 余り 0
15÷2= 7 ・・・ 余り 1
7÷2= 3 ・・・ 余り 1
3÷2= 1 ・・・ 余り 1
より、01111000となる。
1と0の個数は同じ4個ずつなので条件にも当てはまる。

イの127を2進数で表すと
127÷2= 63 ・・・ 余り 1
63÷2= 31 ・・・ 余り 1
31÷2= 15 ・・・ 余り 1
15÷2= 7 ・・・ 余り 1
7÷2= 3 ・・・ 余り 1
3÷2= 1 ・・・ 余り 1
より、01111111となる。
1と0の個数が同じではないので条件から外れる。

ウの170を2進数で表すと
170÷2= 85 ・・・ 余り 0
85÷2= 42 ・・・ 余り 1
42÷2= 21 ・・・ 余り 0
21÷2= 10 ・・・ 余り 1
10÷2= 5 ・・・ 余り 0
5÷2= 2 ・・・ 余り 1
2÷2= 1 ・・・ 余り 0
より、10101010となる。
1と0の個数は同じ4個ずつなので条件にも当てはまる。

エの240を2進数で表すと
240÷2= 120 ・・・ 余り 0
120÷2= 60 ・・・ 余り 0
60÷2= 30 ・・・ 余り 0
30÷2= 15 ・・・ 余り 0
15÷2= 7 ・・・ 余り 1
7÷2= 3 ・・・ 余り 1
3÷2= 1 ・・・ 余り 1
より、11110000となる。
1と0の個数は同じ4個ずつなので条件にも当てはまる。

以上より、最大になるのは240となる。


問題10

基数変換に関する記述のうち、適切なものはどれか
ア. 2進数の有限小数は、10進数にしても必ず有限小数になる。
イ. 8進数の有限小数は、2進数にすると有限小数にならないこともある。
ウ. 8進数の有限小数は、10進数にすると有限小数にならないこともある。
エ. 10進数の有限小数は、8進数にしても必ず有限小数になる。
答え、ア


問題11

問題省略
【設問1】
最終更新:2014年01月22日 01:42