第3章 演算子 / 第4回 模擬試験

PHPのビット演算子に関する次の記述のうち、正しいものはどれか。

`<<`は左シフト演算子で、ビットを左に指定回数シフトする(2進数で見ると値が倍増する)。 正解
`&`はビット演算子ではなく、文字列連結演算子である。
`|`(ビットOR)は、両方のビットが1の場合のみ1になる演算子である。
PHPにはビット演算子という概念は存在しない。
解説
`<<`(左シフト演算子)は、左辺の値を2進数として捉え、指定したビット数だけ左にずらす演算子です。1ビット左にシフトするごとに値はおおむね2倍になります(`$a << $b`は`$a * 2 ** $b`に相当します)。 他の選択肢が誤りである理由は次の通りです。 ・`&`はビットAND演算子です。文字列連結演算子は`.`(ドット)です。 ・`|`(ビットOR)は、対応するビットのどちらか一方でも1であれば1になる演算子です。「両方が1の場合のみ1」になるのはビットAND(`&`)の説明です。 ・PHPには`&`(AND), `|`(OR), `^`(XOR), `~`(NOT), `<<`(左シフト), `>>`(右シフト)といったビット演算子が存在します。 例: ``` echo 1 << 3; // 8(1を2進数で3ビット左シフト → 2の3乗倍) echo 5 & 3; // 1(ビットAND) echo 5 | 2; // 7(ビットOR) ``` (参照: 独習PHP 第4版 第3章 演算子 3.5節 ビット演算子 p.112〜115)