質問: PHPの偶奇判定と&演算子 PHPで偶数か奇数かを判定する際に にて&演算子が用いられていますが,この処理の意味が不明です。 どういう具合で偶奇判定が行われているのか教えていただけますでしょうか?
回答: 「&」はビット演算子です。 PHP: ビット演算子 - Manual 「1」という整数値は、最下位のビットが 1 で、残りのビットが 0 ですから、「1」という数値との 「&」によるビット演算の結果は、 * 最下位のビット以外のビットはすべて 0 * 最下位のビットは、ビット演算の相手の最下位ビットが 0 なら 0、1 なら 1 となるので、演算の結果は 0 か 1 になります。 で、「1」とビット演算を行う相手の数値の最下位ビットが 1 である、という事は、その値が奇数の時、逆に最下位ビットが 0 の時は、その値が偶数の時になるので、 * 元の値が奇数なら、演算結果は 1 * 元の値が偶数なら、演算結果は 0 になります。 で、php で整数型から論理型への変換で PHP: 論理型 (boolean) - Manual * 値が 0 の時は false * 値が 0 以外の時は true なので、 ``` function odd($var) { // 渡された整数が奇数かどうかを返します return($var & 1); } ``` は * $val が奇数の時は true * $val が偶数の時は false となります。