xは、0以上65536未満の整数である。xを16ビットの2進数で表現して上位8ビットと下位8ビットを入れ替える。得られたビット列を2進数とみなしたとき、その値をxを用いた式で表したものはどれか。ここで、a div bはaをbで割った商の整数部分を、a mod bはaをbで割った余りを表す。また、式の中の数値は10進数で表している。ア.(x div 256) + (x mod 256) イ.(x div 256) + (x mod 256) x 256 ウ.(x div 256) x 256 + (x mod 256) エ.(x div 256) x 256 + (x mod 256) x 256

【解答】

論理的に数値を考えるよりも、xの代表的な値を代入して、等しい数になる数式(すなわち、上位8ビットと下位8ビットを入れ替えた値となる数式)を選んだ方がよい。

そこで、xの代表的な値を検討すると、

・0以上65536未満の整数である

・上位8ビットと下位ビットを入れ替える処理をする

から、1と、2^8(2進数で100000000、9ビット目を1とする)の256で考えれば計算しやすい。

そこで実際に計算してみると、

1 div 256 の整数部分は「0」

256 div 256 の整数部分は「1」

1 mod 256 の余りは 「1」

256 mod 256 の余りは「0」

となる。

さらに、それぞれの項目の計算式に当てはめると、

ア = x div 256 + x mod 256であり、

xが1の場合 → 0 + 1 = 1

xが256の場合 →  1 + 0 = 1

となり、xが1の場合に入れ替えられていないので、不適切となる。

イ = x div 256 + (x mod 256) ・256であり、

xが1の場合 → 0 + 1・256 = 256

xが256の場合 → 1 + 0・256 = 1

となり、入れ替えられているので、適切である。

よって、イとなる。

なお、ウ = x div 256 x 256 + x mod 256

xが1の場合 → 0・256 + 1 = 1

となり、不適切となるし、

エ = x div 256 x 256 + x mod 256 x 256 は、

xが1の場合 → 0・256 + 1・256 = 256

xが256の場合 → 1・256 + 0・256 = 256

となり、不適切となる。

↓クリックしていただけると励みになります↓
にほんブログ村 株ブログ 株日記へ にほんブログ村 メンタルヘルスブログ 統合失調症へ にほんブログ村 為替ブログ 為替日記へ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする