3 回答

TA贡献2039条经验 获得超8个赞
从位运算符:
$a & $b 并且在 $a 和 $b 中设置的位都被设置。
var_dump(196 & 4);
var_dump(196 & 16);
var_dump(4 & 16);
非零的地方0是:falsetrue
int(4)
int(0)
int(0)
您可以转换为布尔值true或false:
var_dump((bool) (196 & 4));

TA贡献1831条经验 获得超4个赞
按位的答案比我的要好得多,但这里是如何在不使用按位运算符的情况下做到这一点:
<?php
function hasMatchingBits($x, $y)
{
$x = strrev(decbin($x));
$y = strrev(decbin($y));
$lengthX = strlen($x);
$lengthY = strlen($y);
$length = $lengthX < $lengthY ? $lengthX : $lengthY;
for ($i = 0; $i < $length; $i++) {
if ($x[$i] === '1' && $y[$i] === '1') {
return true;
}
}
return false;
}
echo hasMatchingBits(196, 4) ? "Yes\n" : "No\n";
echo hasMatchingBits(196, 16) ? "Yes\n" : "No\n";
echo hasMatchingBits(4, 16) ? "Yes\n" : "No\n";
你可以在这里看到https://3v4l.org/8lSJX

TA贡献1943条经验 获得超7个赞
使用位运算符:
$number1 = 196;
$number2 = 4;
if ($number1 & $number2){
echo "Number 1 and 2 are equal";
} else {
echo "Number 1 and 2 are not equal";
}
- 3 回答
- 0 关注
- 110 浏览
添加回答
举报