本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成23年度 秋期 応用情報技術者試験問題と解説

問1

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