PHP में ^ ऑपरेटर **बिटवाइज़ XOR (एक्सक्लूसिव OR)** ऑपरेटर है। यह दो पूर्णांकों के बाइनरी प्रतिनिधित्व पर बिट-दर-बिट XOR ऑपरेशन करता है।
XOR सत्यता तालिका
| बिट A | बिट B | A ^ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
नियम: बिट्स अलग हों तो 1, समान हों तो 0।
दिया गया उदाहरण (चर स्वैपिंग)
<?php $x = "a"; $y = "b"; $x ^= $y; $y ^= $x; $x ^= $y; echo $x; // b echo "\n"; echo $y; // a ?>
आउटपुट
b a
यह कैसे काम करता है (XOR स्वैप एल्गोरिदम):
$x ^= $y→$x = $x ^ $y(अब$xमें संयुक्त जानकारी)$y ^= $x→$y = $y ^ ($x ^ $y) = $x(मूल$x)$x ^= $y→$x = ($x ^ $y) ^ $x = $y(मूल$y)
नोट: यह स्ट्रिंग्स पर काम करता है क्योंकि PHP स्ट्रिंग्स पर बिटवाइज़ ऑपरेटर्स को बाइट-दर-बाइट लागू करता है।
व्यावहारिक उपयोग
1. फ्लैग्स/बिटमास्क प्रबंधन
<?php const READ = 1; // 0001 const WRITE = 2; // 0010 const EXECUTE = 4; // 0100 $permissions = READ | WRITE; // 0011 (3) $permissions ^= WRITE; // WRITE टॉगल: 0001 (READ बचा) $permissions ^= EXECUTE; // EXECUTE जोड़ें: 0101 (READ|EXECUTE) ?>
2. सरल एन्क्रिप्शन/ऑबफस्केशन
<?php
function xor_cipher($data, $key) {
$out = '';
for ($i = 0; $i < strlen($data); $i++) {
$out .= $data[$i] ^ $key[$i % strlen($key)];
}
return $out;
}
$encrypted = xor_cipher("Secret", "key");
$decrypted = xor_cipher($encrypted, "key"); // समान ऑपरेशन डिक्रिप्ट करता है
?>
3. दो मानों में अंतर ढूंढना
<?php $a = 10; // 1010 $b = 6; // 0110 $diff = $a ^ $b; // 1100 (12) - बिट्स जो अलग हैं ?>
अन्य बिटवाइज़ ऑपरेटर्स
| ऑपरेटर | नाम | उदाहरण |
|---|---|---|
& | AND | दोनों 1 तो 1 |
| | OR | कोई 1 तो 1 |
~ | NOT | बिट्स उलटे |
<< | बाएं शिफ्ट | बिट्स बाएं |
>> | दाएं शिफ्ट | बिट्स दाएं |