IPA過去問ドリル

平成29年度 秋期 基本情報技術者試験 午前 問1

テクノロジ/基礎理論

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

出典:平成29年度 秋期 基本情報技術者試験 午前 問1

正解:ア

解説

xを10倍するには,x×10=x×8+x×2=(x<<3)+(x<<1),あるいはx×10=(x×4+x)×2=(x<<2+x)<<1という関係を使います。後者の式は「2ビット左シフトした値(4x)にxを加算して5xを作り,その5xを更に1ビット左シフトして10xを得る」という手順になります。桁あふれが起きない前提なので,シフトと加算だけで正確に10倍が求められます。

選択肢ごとの解説

  • 正しい。xを2ビット左シフトして4xを作り,xを加算して5xとし,更に1ビット左シフトすると5x×2=10xになります。
  • 誤り。4xにxを加算して5xとした後,2ビット左シフトすると5x×4=20xとなり,10xにはなりません。
  • 誤り。3ビット左シフトした8xと2ビット左シフトした4xを加算すると12xとなり,10xにはなりません。
  • 誤り。8xにxを加算して9xとした後,1ビット左シフトすると9x×2=18xとなり,10xにはなりません。
基本情報技術者の過去問を演習モードで解く