Php 双变量位异或
我有两个变量:$a和$b,我想得到它们的XORPhp 双变量位异或,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 = 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