2014-03-26 25 views
-1

我有兩個變量:$a$b,我想要得到它們的異或。按位異或兩個變量

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

爲什麼它給我 '1001000111100000001100010001' 而不是 '11110110111000011111110011101110'?

+2

http://www.php.net/manual/en/language.operators.bitwise.php – fvu

回答

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和bindec對老版本PHP。在你的例子中的數字被視爲十進制(或八進制,如果他們以零開始)。

php> 0b101010; 
int(42) 
php> bindec('101010'); 
int(42) 
+0

如果我寫 「01010^11011」 我知道「 10507" 。 – Michael

+1

@Michael您正在使用十進制/八進制數字。使用'0b01010'(適用於PHP 5.4)或'bindec'將其轉換爲十進制。 – TimWolla

+0

10507 decbin = 10100100001011. is 01010^11011 = 10011? – Michael