我有两个变量:$a
和$b
,我想得到它们的XOR。
$a = bindec('00110111001010000011101000111010');
$b = bindec('00111110001101100011100100101011');
//(11110110111000011111110011101110) <---This is what I want
$c = $a ^ $b;
echo $c = decbin($c);
为什么它会给我&#39; 1001000111100000001100010001&#39;而不是&#39; 11110110111000011111110011101110&#39;?
答案 0 :(得分:1)
xor
是布尔值XOR。对bitwise XOR使用^
:
php> true xor false;
bool(true)
php> true xor true;
bool(false)
php> 5^8;
int(13)
php> 5 xor 8;
bool(false)
从PHP 5.4开始,您可以使用二进制文字,对于较旧的PHP版本,您可以使用bindec
。您的示例中的数字被视为十进制(如果它们以零开头,则为八进制)。
php> 0b101010;
int(42)
php> bindec('101010');
int(42)
答案 1 :(得分:1)
喜欢这个
$c=$a ^ $b
这是文档http://www.php.net/manual/en/language.operators.bitwise.php
如果您想使用像您发布的二进制数字,请在其前面加上“0b”。否则它们被解释为小数。这仅适用于PHP 5.4及以上版本(What's the prefix for binary in PHP?)
$a = 0b01010
$b = 0b11011