ビット演算子
例 | 名前 | 結果 |
---|---|---|
$a & $b | ビット積(論理積) | $a および $b の両方にセットされているビットがセットされます。文字列の長さは短い方の長さ。 |
$a | $b | ビット和(論理和) | $a または $b のどちらかにセットされているビットがセットされます。文字列の長さは長い方の長さ、不足分は最後にバイナリ0を追加して演算する。 |
$a ^ $b | ビットXOR(排他的論理和) | $a または $b のどちらか一方にセットされており、両方にセットされていないビットがセットされます。 |
~ $a | ビット否定 | $a にセットされているビットはセットせず、そうでないものは逆にします。 |
$a << $b | 左シフト | $a のビットを左に $b ビットシフトする (各シフトは “2をかける” ことを意味します) |
$a >> $b | 右シフト | $a のビットを右に $b ビットシフトします (各シフトは “2で割る” ことを意味します) |
10 << 1 10 * 2の1乗 結果:20
10 << 3 10 * 2の3乗 結果:80
奇数、偶数の判定
function odd($var)
{
// 渡された整数が奇数かどうかを返します
return $var & 1;
}
function even($var)
{
// 渡された整数が偶数かどうかを返します
return !($var & 1);
}
$array1 = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
$array2 = [6, 7, 8, 9, 10, 11, 12];
echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
/*
Odd :
Array
(
[a] => 1
[c] => 3
[e] => 5
)
Even:
Array
(
[0] => 6
[2] => 8
[4] => 10
[6] => 12
)
*/
参考記事
Math関数/BC Math関数