Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-转换位掩码_Php_Bit Manipulation - Fatal编程技术网

PHP-转换位掩码

PHP-转换位掩码,php,bit-manipulation,Php,Bit Manipulation,假设我分配以下结果: array('1'=>'苹果','2'=>'香蕉','4'=>'葡萄','8'=>'橘子') 如果我想代表苹果公司和香蕉公司,我可以这样做:0001或0010获得0011(或3),对吗 给定数字3,如何将其转换为1和2?在循环中使用按位and(&)运算符来测试位。在循环中使用按位and(&)运算符来测试位。通常,您是以这种方式使用位掩码的(语言无关) 现在要测试我是否喜欢香蕉,请评估: myFavoriteFruits & BANANA 通常情况下,您会以这种方式

假设我分配以下结果:

array('1'=>'苹果','2'=>'香蕉','4'=>'葡萄','8'=>'橘子')

如果我想代表苹果公司和香蕉公司,我可以这样做:
0001或0010
获得
0011
(或3),对吗


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

在循环中使用按位and(&)运算符来测试位。

在循环中使用按位and(&)运算符来测试位。

通常,您是以这种方式使用位掩码的(语言无关)

现在要测试我是否喜欢香蕉,请评估:

myFavoriteFruits & BANANA

通常情况下,您会以这种方式使用位掩码(与语言无关)

现在要测试我是否喜欢香蕉,请评估:

myFavoriteFruits & BANANA

所有密钥将加载到
$keys

$keys = array();
$value = 3;

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

所有密钥将加载到
$keys

$keys = array();
$value = 3;

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

0001和0010
为0。你的意思可能是
0001或0010
No,两者都不是。他应该使用按位的
&
|
,如果有的话。@Hyperboreus-已更改。谢谢。仅供参考,使用逐位运算符生成正确的位掩码更容易:
2@Jonah为了生成2的幂,使用bitshift而不是幂更容易。
0001和0010
为0。你的意思可能是
0001或0010
No,两者都不是。他应该使用按位的
&
|
,如果有的话。@Hyperboreus-已更改。Thank.FYI,使用按位运算符生成正确的位掩码更容易:
2@Jonah为了生成2的幂,使用位移位而不是幂更容易。看起来Tim Cooper提供了一个:^)看起来Tim Cooper提供了一个:^)