オリジナル模擬試験1 問3
問3解説へ
数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを20倍する操作はどれか。ここで,シフトによるけたあふれは,起こらないものとする。
- xを2ビット左にシフトした値にxを加算し,更に2ビット左にシフトする。
- xを3ビット左にシフトした値と,xを4ビット左にシフトした値を加算する。
- xを3ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。
- xを4ビット左にシフトした値からxを減算し,更に1ビット左にシフトする。
広告
解説
ビットシフトを使用した乗算に関する問題です。
2進数のビット列は、左にnビットシフトすると 元の値と比べて2n倍,右にnビットシフトすると 1/(2n)倍になるという性質があります。これを頭に入れて各選択肢が何倍になるかを考えてみると、
2進数のビット列は、左にnビットシフトすると 元の値と比べて2n倍,右にnビットシフトすると 1/(2n)倍になるという性質があります。これを頭に入れて各選択肢が何倍になるかを考えてみると、
- (22+1)×22=(4+1)×4=5×4=20倍
- 23+24=8+16=24倍
- (23+1)×21=(8+1)×2=18倍
- (24+1)×21=(16-1)×2=30倍
広告