基本情報技術者試験令和3年2201問1

16ビット整数のビット位置変換をマスターしよう

0以上65,536未満の整数xを,16ビットの2進数で表現して,上位8ビットと下位8ビットを入れ替える。

得られたビット列を2進数とみなしたとき,その値をxを用いた式で表したものはどれか。

ここで,a÷bはaをbで割った商の整数部分を,a%bはaをbで割った余りを表す。

また,式の中の数値は10進法である。

×不正解です

16ビットの2進数は「上位8ビット (高位)」と「下位8ビット (低位)」に分けられます。この問題では、上位8ビットと下位8ビットを入れ替えます。この操作は、上位8ビットを右に8ビットシフトして下位に、下位8ビットを左に8ビットシフトして上位に持ってくることに相当します。

2進数の右シフトは、ビットを右に移動させ、それにより数値を 1/2, 1/4, 1/8,... といった具合に減少させます。この場合、8ビット分右にシフトすれば、2^8=256 で割る計算になります。同様に、左にシフトする場合は、シフト毎に数値が2倍になるので、8ビット分左にシフトすれば256を掛けることに相当します。

  • 上位8ビットの数値は、16ビットの整数を256で割った商で与えられます(x ÷ 256)
  • 下位8ビットは、整数を256で割った余りで表されます(x % 256)
  • 上位8ビットを右シフトで下位へ移動させると (x ÷ 256) そのまま、
  • 下位8ビットを左シフトで上位へ移動させるために (x % 256) × 256 となります

したがって、入れ替えた後の2進数の値は、(x ÷ 256) + (x % 256) × 256 で表現されます。

回答数 0
正解率 0%