ลืมไปนานจนมีคนมาถามเนี่ยแหละสลับค่าตัวแปรอย่างไรดีที่สุด แล้วก็ไปเห็นตัวอย่างนึงเค้าเขียนไว้ว่า
php code
$a = $a ^ $b; $b = $a ^ $b; $a = $a ^ $b; |
หาก็ไม่ค่อยเจอเพราะว่าไอ้เครื่องหมาย ^ caret เนี่ยมันหาใน google เจอซะที่ไหน ก็เลยไปถามนู๋เนยรู้เรื่องเลย ว่าไอ้ ^ มันหมายความว่า xor หรือ exclusive or โดยจะมีตารางค่าความจริงเป็นดังนี้
a | b | xor |
1 | 1 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
0 | 0 | 0 |
มีประโยชน์อย่างยิ่งในการสลับค่าตัวแปรโดยที่ไม่จำเป็นต้องประกาศตัวแปรเพิ่มเติม ไม่ต้องจอง buffer ให้มากมาย
หลักการ (a xor b) xor b จะเท่ากับ a
ตัวอย่างการทำงาน
a = 14 >> 1110
b = 5 >> 1010
1) a = a xor b | 2) b = a xor b | 3) a = a xor b | |
a | 1110 | 0100 | 0101 |
b | 1010 | 1010 | 1111 |
result | 0100 ---> a | 1110 ---> b | 0101 ---> a |
a กับ b สลับค่ากันแล้ว! wow จริงๆ แล้วมันเป็นเรื่องที่ไม่น่าลืมนะเนี่ย
ไม่มีความคิดเห็น:
แสดงความคิดเห็น