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

No.62

非負の2進数b1b2…bnを3倍にしたものはどれか。
  • b1b2…bn0+b1b2…bn
  • b1b2…bn00−1
  • b1b2…bn000
  • b1b2…bn1
  • [出題歴]
  • 基本情報技術者 H24春期 問2

分類

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

正解

解説

2進数には、ビット列全体を左へnビット分シフトすると2n倍、右へnビット分シフトすると1/2n倍になるという特徴があります。
  • 正しい。全体を1ビットだけ左にシフトしたビット列に対して、元のビット列を加算(+1倍)する処理を組み合わせているので、3倍になります。
    1. 左へ1ビット分シフトする。空白になる最右ビットは0で埋める。
       b1b2…bn ⇒ b1b2…bn0
    2. 1.で得られたビット列に元のビット列を加算する。
       b1b2…bn0+b1b2…bn
  • 左へ2ビットシフトしたあと−1しているので、結果は4倍−1です。3倍ではありません。
  • 左へ3ビットシフトしているので、結果は23=8倍になります。
  • 左へ1ビットシフトしたあと+1しているので、結果は2倍+1です。3倍ではありません。
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop