平成23年度 秋期 応用情報技術者試験 午前 問1
テクノロジ/基礎理論x は,0以上65,536未満の整数である。x を16ビットの2進数で表現して上位8ビットと下位8ビットを入れ替える。得られたビット列を2進数とみなしたとき,その値を x を用いた式で表したものはどれか。ここで,a div b は a を b で割った商の整数部分を,a mod b は a を b で割った余りを表す。また,式の中の数値は10進法で表している。
出典:平成23年度 秋期 応用情報技術者試験 午前 問1
- ア(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ビットの x を x=256×upper+lower(upper=x div 256,lower=x mod 256)と表せます。上位8ビットと下位8ビットを入れ替えると,新しい値は 256×lower+upper となり,加法の交換法則から (x div 256)+(x mod 256)×256 と書けます。
選択肢ごとの解説
- ア誤り。(x div 256)+(x mod 256) は上位バイトと下位バイトを単純に足し合わせただけで,桁の重み(×256)を考慮していない値です。
- イ正しい。入れ替え後の値は 256×(x mod 256)+(x div 256) であり,これは (x div 256)+(x mod 256)×256 と同じです。
- ウ誤り。(x div 256)×256+(x mod 256) は入れ替える前の x そのものの値です。
- エ誤り。(x div 256)×256+(x mod 256)×256 は上位・下位の両方に256を掛けており,元の値の256倍相当になってしまいます。