二进制位掩码在php中获取不同的值

时间:2013-08-23 05:03:37

标签: php bit bitmask

我想通过屏蔽从一个数字中获取不同的值。我已经解释过了。

我有一个数字“1540104”,并希望从中获取相关的二进制值及其相关的十进制值。

1540104

101111000000000001000

100000000000000000000 => 1048576

001000000000000000000 => 262144

000100000000000000000 => 131072

000010000000000000000 => 65536

000001000000000000000 => 32768

000000000000000001000 => 8

那么如何设置逻辑来获得这个相关的十进制值。

2 个答案:

答案 0 :(得分:1)

这将循环输入并回显出所设置位的所有十进制值:

$input = 1540104;
$bit = 0;

while ($input > 0) {
  if ($input & 0x1) {
    echo pow(2, $bit);
    echo "<br/>";
  }
  $bit++;
  $input = $input >> 1;
}

答案 1 :(得分:0)

我更喜欢上面的josh bobruk答案(因此赞成),但无论如何这里都是我的:

for ($i=1; $i<=1540104;$i=$i*2) {
    $res = $i & 1540104;
    if ($res) {
        echo "$i: $res<br/>";
    }

}