離散数学 (全108問中4問目)

No.4

0以上65,536未満の整数xを,16ビットの2進数で表現して,上位8ビットと下位8ビットを入れ替える。得られたビット列を2進数とみなしたとき,その値をxを用いた式で表したものはどれか。ここで,a÷bはaをbで割った商の整数部分を,a%bはaをbで割った余りを表す。また,式の中の数値は10進法である。
  • (x÷256)+(x%256)
  • (x÷256)+(x%256)×256
  • (x÷256)×256+(x%256)
  • (x÷256)×256+(x%256)×256
  • [出典]
  • 午前免除試験 R3-1月 問1
  • 応用情報技術者 H23秋期 問1と同題

分類

テクノロジ系 » 基礎理論 » 離散数学

正解

解説

仮に用意した16ビットの2進数"11110000 00001111"の上位ビット8ビットと下位8ビットを入れ替えると、以下のようになります。

 11110000 0000111100001111 11110000

入れ替え後の下位8ビットは、入れ替え前の上位8ビットを、右へ8ビット分シフトすることで得ることができます。2進数は、右に1ビットシフトするごとに値が1/2倍になる性質がありますから、右へ8ビット分シフトした値は、元の値を「÷28 → ÷256」することで表現できます。

 11110000 00001111÷256=00000000 11110000

さらに入れ替え後の上位8ビットは、入れ替え前の下位8ビットを、左へ8ビットシフトすることで得ることができます。xの下位8ビットは、xを256で割った余りと同じです。2進数は、左に1ビットシフトするごとに値が2倍になる性質がありますから、左へ8ビット分シフトした値は、下位8ビットの値を「×28 → ×256」することで表現できます。

 11110000 00001111%256=00000000 00001111
 00000000 00001111×256=00001111 00000000

入れ替え後のビット列は下位8ビットの値「x÷256」と上位8ビットの値「(x%256)×256」を足し合わせたものであるため、入れ替え後の整数をxを用いて表した式は、

 (x÷256)+(x%256)×256

したがって「イ」が正解です。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop