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提供了一个:^)