第2種情報処理技術者試験 2000年度 = 平成12年度・秋期 午前 問12

 16ビットの符号なし固定小数点の2進数n を、16進数の各けたに分けて下位のけたから順にスタックに格納するために、次の手順を4回繰り返す。  a    b   に入る適切な語句の組合せはどれか。ここで、xxxx16は16進数xxxxを表す。

〔手順〕
 (1)   a  x
 (2) n  b   、論理シフトする。
 (3) x をスタックにプッシュする。


 ア   n AND 000F16   左に4ビット  
 イ   n AND 000F16  右に4ビット 
 ウ   n AND FFF016  左に4ビット 
 エ   n AND FFF016  右に4ビット 

解答

 イ

解説

 特定部分のビットを取り出すために、ビットごとのAND演算を行う際に使うビットパターンをマスクビットといいます。取り出す部分のビットがすべて1で、それ以外のビットがすべて0です。
 16進数の1けたは2進数の4けたと一対一で対応しますので、下位4ビットが1すなわち000Fのマスクビットを用意すればいいことになります。
 xxxxがABCDである例を以下に示します。

       ┏━━━━┯━━━━┯━━━━┯━━━━┓       ┌──────┃1010│1011│1100│1101┃  ABCD │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │      ┏━━━━┯━━━━┯━━━━┯━━━━┓       │ AND  ┃0000│0000│0000│1111┃  000F │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │      ┏━━━━┯━━━━┯━━━━┯━━━━┓       │      ┃0000│0000│0000│1101┃  000 │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │                                  │右に4ビットシフト                         │                                  └─────→┏━━━━┯━━━━┯━━━━┯━━━━┓       ┌──────┃0000│1010│1011│1100┃  0ABC │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │      ┏━━━━┯━━━━┯━━━━┯━━━━┓       │ AND  ┃0000│0000│0000│1111┃  000F │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │      ┏━━━━┯━━━━┯━━━━┯━━━━┓       │      ┃0000│0000│0000│1100┃  000 │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │                                  │右に4ビットシフト                         │                                  └─────→┏━━━━┯━━━━┯━━━━┯━━━━┓       ┌──────┃0000│0000│1010│1011┃  00AB │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │      ┏━━━━┯━━━━┯━━━━┯━━━━┓       │ AND  ┃0000│0000│0000│1111┃  000F │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │      ┏━━━━┯━━━━┯━━━━┯━━━━┓       │      ┃0000│0000│0000│1011┃  000 │      ┗━━━━┷━━━━┷━━━━┷━━━━┛       │                                  │右に4ビットシフト                         │                                  └─────→┏━━━━┯━━━━┯━━━━┯━━━━┓              ┃0000│0000│0000│1010┃  000A        ┗━━━━┷━━━━┷━━━━┷━━━━┛              ┏━━━━┯━━━━┯━━━━┯━━━━┓         AND  ┃0000│0000│0000│1111┃  000F        ┗━━━━┷━━━━┷━━━━┷━━━━┛         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━        ┏━━━━┯━━━━┯━━━━┯━━━━┓              ┃0000│0000│0000│1010┃  000        ┗━━━━┷━━━━┷━━━━┷━━━━┛      



BohYoh.comトップページへ