ITの基礎知識|ITパスポート・基本情報

基本情報技術者 平成20年春 問4

2017.09.22

数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを 10 倍する 操作はどれか。ここで,シフトによるけたあふれは,起こらないものとする。

  • ア: xを2ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
  • イ: xを2ビット左にシフトした値にxを加算し,更に2ビット左にシフトする。
  • ウ: xを3ビット左にシフトした値と,xを2ビット左にシフトした値を加算する。
  • エ: xを3ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。

Show answer

正解: ア

2進数では、けたあふれが起こらない場合、左にnビットシフトすると2n 倍になる。

  • ア:xを2ビット左にシフトすると4xになる。
    xを加算すると4x+x=5xになる。
    1ビット左にシフトすると5x×2=10x になる。
  • イ:xを2ビット左にシフトすると4xになる。
    xを加算すると4x+x=5xになる。
    2ビット左にシフトすると5x×4=20x になる。
  • ウ:xを3ビット左にシフトすると8xになる。
    xを2ビット左にシフトすると4xになる。
    加算すると8x+4x=12xになる。
  • エ:xを3ビット左にシフトすると8xになる。
    xを加算すると8x+x=9xになる。
    1ビット左にシフトすると9x×2=18x になる。