問1 |
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)×256 |
ウ |
(x div 256)×256+(x mod 256) |
エ |
(x div 256)×256+(x mod 256)×256 |
|
|
解説 |
まず、特定の値を基数のべき乗で割る、余りをとることの意味を考えます。まず、10進数の12345を100(=102)で割ると商の部分は123、100で余りをとると45を取り出すことができます。つまり、基数のべき乗の桁数で割るとそこより上の値を、余りをとると下の値を取り出すことができます。
2進数xを256(=28)で割ると、9桁以上を取り出すことができます。また、2進数xを256で余りをとると、8桁以下をとりだすことができます。
上位8ビットを下位8ビットとして作成することは、単純に256で割ると作ることが出ます。下位8ビットを上位8ビットとして作成するためには、256で余りをとった後に、桁を上げるために、8ビットシフトをする(256倍する)ことで作成することができます。あとは、これを加算すれば、上位8ビットと下位8ビットを入れ替えることができます。 |
|