位操作-PHP-转换位掩码


bit manipulation - PHP - converting bitmask

假设我分配以下果实:

array ('1' => 'apple', '2' => 'banana', '4' => 'grape', '8' => 'orange')

如果我想表示applebanana,我可以做以下操作:0001 OR 0010得到0011(或3(,对吗?

给定数字3,如何将其转换为12

所有密钥都将加载到$keys:中

$keys = array();
$value = 3;
foreach ($arr as $key => $val)
{
   if ($value & $key)
   {
      $keys[] = $key;
   }
}

通常您以这种方式使用比特掩码(语言无关(

BANANA = 0x1
APPLE = 0x2
GRAPE = 0x4
LEMON = 0x8
PAPAYA = 0x10
GUAYABA = 0x20

myFavoriteFruits = BANANA | GRAPE // I like both bananas and grapes.

现在测试一下我是否喜欢你评价的香蕉:

myFavoriteFruits & BANANA

在循环中使用逐位AND(&(运算符来测试位。