私はこの番号を持っています:
0101
そして私はそれがの2進和であることを知っています
0100
0001
最初の値からこれらの値を取得するにはどうすればよいですか?
編集
JoeCortopassiのロジックに基づいてコードのスニペットを作成しました。スニペットはこれです:
protected function _getSitesPublished($value) {
static $bits = null;
if (!$bits) {
$bits = array ();
$bit = 0;
$x = 0;
while ($bit < 4294967295) {
$bit = pow (2, $x);
$bits [$bit] = $bit;
++ $x;
}
}
$sites = array ();
foreach ($bits as $bit) {
if (($value & $bit) == $bit) {
$sites [] = $bit;
}
}
return $sites;
}
メソッドが最初に呼び出されたときにのみビットを作成します。私は妥協しなければなりません
if (($value & $bit) == $bit)
はintを返すので$value & $bit
(のように0以外の場合もあります6 & 3
)、そのため私は使用できませんif ($value & $bit)
皆様のご協力に感謝いたします。
2おっと編集!ちょっとしたバグがありました...$xXDを増やすのを忘れました