修了試験 2017-12-10実施分 基本情報技術者試験 問2
0以上65,536未満の整数xを,16ビットの2進数で表現して,上位8ビットと下位8ビットを入れ替える。 得られたビット列を2進数とみなしたとき,その値をxを用いた式で表したものはどれか。 ここで,a÷bはaをbで割った商の整数部分を,a%bはaをbで割った余りを表す。 また,式の中の数値は10進数である。
正答2
解説
正解は2です。 16ビットの値xは、上位8ビットと下位8ビットに分けて考えます。 8ビットで表せる値の個数は2^8=256なので、上位8ビットの値はx÷256、下位8ビットの値はx%256で求められます。 入れ替えた後は、元の下位8ビットが上位に移り、元の上位8ビットが下位に移ります。 【選択肢別解説】 1:× (x%256)に256を掛けていないので、元の下位8ビットが上位の位置に移っていません。 2つの8ビット値を単に足しただけの値になります。 2:○ 元の下位8ビット(x%256)を256倍して上位の位置へ移し、元の上位8ビット(x÷256)を下位に置いています。 入れ替え後の値と一致します。 3:× (x÷256)×256+(x%256)は、上位8ビットを上位のまま、下位8ビットを下位のまま戻した式です。 この値は元のxそのもので、入れ替えになっていません。 4:× 上位と下位の両方に256を掛けているため、どちらも上位側に移った値の和になります。 入れ替え後の値とは一致しません。 【計算】 例としてx=0x1234(10進で4660)とします。 上位8ビットはx÷256=18(16進で12)です。 下位8ビットはx%256=52(16進で34)です。 選択肢2の式は18+52×256=13330で、16進では3412となり、入れ替えが正しく行われています。 【ポイント】 256を掛けることは8ビット左シフト、256で割った商は8ビット右シフトと同じ意味です。 上位を取り出すなら「÷」、下位を取り出すなら「%」と覚えておくと、ビット操作の式を読みやすくなります。まとめて解く
修了試験 2017-12-10実施分を通しで解く(80問)→