-1

我有两个变量:$a并且$b,我想得到它们的 XOR。

$a = bindec('00110111001010000011101000111010');
$b = bindec('00111110001101100011100100101011');          
          //(11110110111000011111110011101110) <---This is what I want  
$c = $a ^ $b;
echo $c = decbin($c);

为什么它给我'1001000111100000001100010001'而不是'11110110111000011111110011101110'?

4

2 回答 2

1

像这样

$c=$a ^ $b

这是文档http://www.php.net/manual/en/language.operators.bitwise.php

如果您想使用您发布的二进制数,请将“0b”放在它们前面。否则,它们将被解释为小数。这仅适用于 PHP 5.4 及更高版本(PHP 中二进制的前缀是什么?

$a = 0b01010
$b = 0b11011
于 2014-03-26T22:10:56.913 回答
1

xor是布尔异或。用于^位 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 和bindec旧 PHP 版本的二进制文字。您示例中的数字被视为十进制(或八进制,如果它们以零开头)。

php> 0b101010;
int(42)
php> bindec('101010');
int(42)
于 2014-03-26T22:10:46.703 回答