Toán tử XOR
Bài học 6 trên 17 trong khóa học Thao tác bit của Coddy.
Toán tử XOR ( ^ )
XOR theo bit nhận hai mẫu bit có độ dài bằng nhau. Nếu chúng không bằng nhau, chỉ cần thêm các bit 0 vào trước bit có trọng số cao nhất của mẫu bit ngắn hơn. Nếu hai bit ở vị trí được so sánh trong các mẫu bit bằng nhau, bit trong mẫu bit kết quả là 0, nếu không thì là 1.
Ký hiệu '^' dùng để biểu thị phép toán XOR.
Khi nói về mặt toán học, ta dùng '⊕' để biểu thị XOR. Vì vậy, bạn cũng có thể gặp ký hiệu này trong một số câu hỏi. Bây giờ, hãy lập bảng để xem toán tử XOR trả về gì với mọi tổ hợp có thể có của hai bit.
| x | 0 | 0 | 1 | 1 |
| y | 0 | 1 | 0 | 1 |
| x ^ y | 0 | 1 | 1 | 0 |
Hãy xem một ví dụ để hiểu rõ hơn về phép toán này:

Trong ví dụ trên, ta thực hiện phép toán XOR trên (11)10 và (2)10 , kết quả là (9)10. Ta chỉ cần viết các số này dưới dạng nhị phân, so sánh hai bit rồi áp dụng định nghĩa XOR ở trên.
Cách dùng:
int a = 1;
int b = 0;
>> a ^ b
OUTPUT: 1XOR có một số tính chất quan trọng. Nếu chưa biết những tính chất này, bạn sẽ mất nhiều thời gian hơn khi giải các câu hỏi liên quan đến XOR.
Một số tính chất quan trọng của XOR
- x ⊕ 0 = x - Nếu XOR một số với 0, bạn sẽ nhận được chính số đó.
- x ⊕ x = 0 - Nếu XOR một số với chính nó, bạn sẽ nhận được 0.
- Hãy lấy hai số x và y. Giả sử x ⊕ y = z. Khi đó, x ⊕ z = y và y ⊕ z = x cũng là những đẳng thức đúng.
Thử thách
Trung bìnhSean thích đi tất và có nhiều đôi tất sành điệu khác nhau trong tủ. Anh ấy giữ những chiếc tất có ghi số trên đó. Ví dụ: (1,1), (10, 10) biểu thị hai đôi tất. Không may, một ngày nọ, một con mèo đột nhập vào tủ và lấy mất một chiếc tất. Những chiếc tất còn lại trong tủ được cung cấp cho bạn dưới dạng một mảng. Hãy hoàn thành hàm MissingSock để tìm xem con mèo đã lấy mất chiếc tất nào.
Ví dụ:
Ban đầu trong tủ có 6 chiếc tất: 1, 1, 2, 3, 3, 2,
- 2 chiếc tất có số
1 - 2 chiếc tất có số
2 - 2 chiếc tất có số
3
Con mèo đi ngang qua và lấy trộm một chiếc tất mang số 1. Đầu vào hiện là: 1, 2, 3, 3, 2 vì thiếu một chiếc tất mang số 1. Thử thách là tìm chiếc tất bị thiếu đó (đầu ra phải là 1 vì đây là chiếc tất bị thiếu)
Tự làm thử
#include <iostream>
#include <vector>
using namespace std;
int MissingSock(vector<int> socks) {
// Viết code ở đây
}Tất cả bài học trong Thao tác bit
1Giới thiệu và kiến thức cơ bản
Thao tác bit là gì?Tại sao cần thao tác bit?Số nhị phân và số thập phânToán tử NOT và ORToán tử ANDToán tử XORToán tử dịch phải và dịch tráiTóm tắt các toán tử bitTự luyện tập: Trình biên dịch C++ online
Kiểm tra một phép chuyển đổi: Công cụ chuyển đổi hệ cơ số