【基本情報処理技術者試験】最新問題のテクノロジ系をまったり解く 問1~問2【令和元年度秋試験】
R01基本情報技術者試験 秋季試験に挑戦
令和元年度 基本情報技術者試験 午前問題
令和元年度 基本情報技術者試験 午前問題 問1
次の流れ図は、10進整数j(0<j<100)を8桁の2進数に変換する処理を表している。2進数は下位桁から順に、配列の要素NISHIN(1)からNISHIN(8)に格納される。流れ図のa及びbに入る処理はどれか?ここで、jdiv2はjを2で割った商の整数部分を、jmod2はjを2で割った余りを表す。
注意:ループ端の繰り返し指定は、変数名:初期値、増分、終値を示す。
a | b | |
---|---|---|
ア | j ← j div 2 | NISHIN(k) ← j mod 2 |
イ | j ← j mod 2 | NISHIN(k) ← j div 2 |
ウ | NISHIN(k) ← j div 2 | j ←j mod 2 |
エ | NISHIN(k) ← j mod 2 | j ← j div 2 |
解説
ちょうどこの前、変数の型の話をしたときに、2進数と10進数の変換やりましたね。
ko-gaku-jiji.hatenablog.jp
2で割っていって、余りを下から並べる
2) 20
2) 10 ...0 ←①
2) 5 ...0 ←②
2) 2 ...1
2) 1 ...0
2) 0 ...1
10100が2進数で書いた10進数の20ということでした。
処理の流れを見てみると、
ア、イは、jを更新してから、更新したjを使ってNISHIN(k)を更新、
ウ、エは、NISHIN(k)を更新してから、同じjを使ってjを更新、という流れになります。
先ほどの筆算をかんがえると、
①は、20を2で割った商を書き、隣に20を2で割った余りを書いている
②は、10を2で割った商を書き、隣に10を2で割った余りを書いている
両方同じjで処理するということですので、ウかエが答えってことになります。
んで、実際に、2進数の数値となるのは、余りの方なので、配列に入るのは確実にmod演算の結果ですね。
じゃぁ、>エが正解
令和元年度 基本情報技術者試験 午前問題 問2
8ビットの値の全ビットを反転する操作はどれか。
ア | 16進表記00のビット列と排他的論理和を取る |
---|---|
イ | 16進表記00のビット列と論理和を取る |
ウ | 16進表記FFのビット列と排他的論理和を取る |
エ | 16進表記FFのビット列と論理和を取る |
解説
論理演算の問題です。
論理和と、排他的論理和が出てきています。これらを知らないとどうしようもないですよね。
逆に知ってれば、考えるまでもない問題なのですが、全員がそうとも限らないのでまじめに考えてみます。
それぞれの、1ビットずつでの演算は以下のようになります。
サンプルに、16進表記のA4(10100100(2)=164(10))を使って、実際に計算してみます。
ア | 16進表記00のビット列と排他的論理和を取る |
---|
イ | 16進表記00のビット列と論理和を取る |
---|
ウ | 16進表記FFのビット列と排他的論理和を取る |
---|
エ | 16進表記FFのビット列と論理和を取る |
---|
全部見てみるとウだけが、元のすべてのビットが反転されてますね。
演算結果がわかっていれば並べてみるだけの問題です。