メインコンテンツへ
基礎理論

符号なし8ビット整数 42(2進数: 00101010)を左に2ビットシフト(論理左シフト)した結果として正しいものはどれか。

ア.84(2進数: 01010100)
イ.168(2進数: 10101000)正解
ウ.10(2進数: 00001010)
エ.21(2進数: 00010101)

解説

ビット左シフトは「2で掛け算する魔法」。1ビット左シフト=×2、2ビット左シフト=×4。ただし8ビットをはみ出た分は消える!

なぜ イ が正解か

Step1: 42×(2²)=42×4=168を計算。Step2: 00101010を左に2ビットシフト→先頭2ビット"00"が押し出されて→10101000₂=168。検算: 128+32+8=168 ✓。8ビットの最大255以内なのでオーバーフローなし。

なぜ ア は間違いか

84=42×2は1ビット左シフトの結果。問題は2ビットシフトを指定している。

なぜ ウ は間違いか

10=42÷4は右2ビットシフト(論理右シフト)の結果。左右を逆に適用した誤り。

なぜ エ は間違いか

21=42÷2は1ビット右シフトの結果。左シフトと右シフト、かつビット数も間違えている。

出典: AI生成問題(学習用)