これは、BC Math (Arbitrary Precision Mathematics) を使用して実現できます。
BC Math を使用すると、数値に対して数学演算を実行できます。算術演算子を使用する場合と BC Maths を使用する場合の違いは、数値を整数または浮動小数点として格納する代わりに、BC Math が数値を文字列として返すことです。
http://php.net/manual/en/ref.bc.php
PHP は BC Math でコンパイルする必要があります。ただし、ほとんどの PHP インストールにはこれが必要です。
残念ながら、文字列に対してビット単位の演算を行うことはできず、BC Math にはビット単位の関数が組み込まれていません。でも; 少しグーグルを行った後、次のコードサンプルを見つけたので、それをコピーして以下に貼り付けました。
function bitValue($no) { return bcpow(2, $no); }
function bitSet($no, $value) {
$tmp = bcmod($value, bitValue($no+1));
return bccomp(bcsub($tmp, bitValue($no)), 0)>= 0;
}
echo bitSet(49, bitValue(48)) ."\n";
echo bitSet(48, bitValue(48)) ."\n";
echo bitSet(47, bitValue(48)) ."\n";
(hernst42へのクレジット)