Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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_Bitwise Xor - Fatal编程技术网

Php 双变量位异或

Php 双变量位异或,php,bitwise-xor,Php,Bitwise Xor,我有两个变量:$a和$b,我想得到它们的XOR $a = bindec('00110111001010000011101000111010'); $b = bindec('00111110001101100011100100101011'); //(11110110111000011111110011101110) <---This is what I want $c = $a ^ $b; echo $c = decbin($c); 为什么它给

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

$a = bindec('00110111001010000011101000111010');
$b = bindec('00111110001101100011100100101011');          
          //(11110110111000011111110011101110) <---This is what I want  
$c = $a ^ $b;
echo $c = decbin($c);
为什么它给我“100100011110000001100001”而不是“11110110111000011111111110011101110”?

xor是布尔异或。将“^”用于:

从PHP5.4开始,以及对于较早的PHP版本,您可以使用二进制文本。如果以零开头,则示例中的数字将被视为十进制或八进制

php> 0b101010;
int(42)
php> bindec('101010');
int(42)
像这样

$c=$a ^ $b
这是医生

如果你想使用你发布的二进制数字,请在前面加上“0b”。否则,它们将被解释为小数。这仅适用于PHP5.4及以上版本


如果我写01010^11011,我得到10507。@迈克尔,你用的是十进制/八进制数。从PHP 5.4或bindec开始,使用0b01010将其转换为十进制。10507 decbin=10100100001011。是01010^11011=10011吗?@Michael我说的是bindec,不是decbin,请看我对答案的编辑。
$c=$a ^ $b
$a = 0b01010
$b = 0b11011