x は、0以上65,536未満の整数である。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)×256
ウ (x div 256)×256 + (x mod 256)
エ (x div 256)×256 + (x mod 256)×256
イ
例えば16ビットの2進数 x を11110000 00001111 として考える。これを上位8ビットと下位8ビットを入れ替えると 0000111111110000 となる。
まず、入れ替えた後の2進数の下位8ビット 11110000 は、入替前の2進数 x の上位8ビットを右へ8ビットシフトさせると得られる。
すなわち、xを28 = 256で割ることで求めることができる。
次に、入替前の2進数 x の下位8ビット 00001111 は、x を28 = 256で割った余りである。これを左へ8ビットシフトさせると、入れ替えた後の2進数の上位8ビットが得られる。
すなわち、(x mod 256)×256で求めることができる。
以上より、x を16ビットの2進数で表現して上位8ビットと下位8ビットを入れ替えた数字は
(x div 256) + (x mod 256)×256 で表すことができる。
【別解】
16ビットの2進数 x を258、すなわち、00000001 00000010で考える。
上位8ビットと下位8ビットを入れ替えると 00000010 00000001 = 513である。
ア (258 div 256) + (258 mod 256) = 1+2 = 3
イ (258 div 256) + (258 mod 256)×256 = 1+2×256 = 513
ウ (258 div 256)×256 + (258 mod 256) = 1×256+2 = 258
エ (258 div 256)×256 + (258 mod 256)×256
= 1×256+2×256 = 256+512 = 768
目次 | 問2 |