Toán tử XOR theo bit của Python >>> 31 ^ 15 164 thực hiện phép XOR logic trên từng vị trí bit trên các biểu diễn nhị phân của số nguyên >>> 31 ^ 15 165 và >>> 31 ^ 15 166. Mỗi bit đầu ra đánh giá là 1 khi và chỉ khi chính xác một trong hai bit đầu vào ở cùng một vị trí là 1. Ví dụ: biểu thức số nguyên >>> 31 ^ 15 167 được dịch sang phép toán nhị phân >>> 31 ^ 15 168, kết quả là >>> 31 ^ 15 169 vì đối với ba vị trí cuối cùng, chính xác một bit là 1 Show
Khi bạn xem qua bài viết, bạn có thể xem video giải thích của tôi tại đây Python Bitwise XOR ^ Toán tử Xem video này trên YouTube Trong ví dụ này, bạn áp dụng toán tử XOR theo bit cho hai số nguyên 32 và 16 >>> 32 ^ 16 48 Biểu thức >>> 0 ^ 1 1 >>> 0 ^ 3 3 >>> 3 ^ 5 6 >>> 33 ^ 129 160 >>> 15 ^ 7 8 >>> 14 ^ 7 90 hoạt động trên các biểu diễn bit >>> 0 ^ 1 1 >>> 0 ^ 3 3 >>> 3 ^ 5 6 >>> 33 ^ 129 160 >>> 15 ^ 7 8 >>> 14 ^ 7 91 (số thập phân 32) và >>> 0 ^ 1 1 >>> 0 ^ 3 3 >>> 3 ^ 5 6 >>> 33 ^ 129 160 >>> 15 ^ 7 8 >>> 14 ^ 7 92 (số thập phân 16) và thực hiện XOR theo bit dẫn đến nhị phân >>> 0 ^ 1 1 >>> 0 ^ 3 3 >>> 3 ^ 5 6 >>> 33 ^ 129 160 >>> 15 ^ 7 8 >>> 14 ^ 7 93 (số thập phân 48)First Operand >>> 31 ^ 15 165100000Second Operand >>> 31 ^ 15 166010000 >>> 31 ^ 15 164110000 Tương tự, chúng ta hãy xem một ví dụ được sửa đổi một chút để giới thiệu toán tử XOR theo bit >>> 31 ^ 15 16 Bạn có thể thấy điều này trong hình dung sau First Operand>>> 31 ^ 15 16511111Second Operand >>> 31 ^ 15 16601111 >>> 31 ^ 15 16410000 Biểu diễn thập phân của chuỗi bit >>> 0 ^ -1 -1 >>> 0 ^ -3 -3 >>> -3 ^ -5 60 là 16 Python Bitwise ^ Ví dụ toán tửĐây là kết quả của toán tử XOR bitwise >>> 31 ^ 15 164 khi được áp dụng cho một vài toán hạng số nguyên ví dụ >>> 31 ^ 15 165 và >>> 31 ^ 15 166x (int)y (int)x (nhị phân)y (nhị phân)x ^ y (nhị phân)x ^ y (int)01011103001111335001101010110633129000100001010000001010100000160157011110011101000814701110100111 Bạn có thể xem những ví dụ đó trong tập lệnh Python sau >>> 0 ^ 1 1 >>> 0 ^ 3 3 >>> 3 ^ 5 6 >>> 33 ^ 129 160 >>> 15 ^ 7 8 >>> 14 ^ 7 9 Tiếp theo, bạn sẽ học cách sử dụng toán tử trên số nguyên âm. Nhưng trước tiên, bạn cần hiểu cách các số nguyên âm được biểu diễn ngay từ đầu. Điều này sẽ nâng cao kỹ năng khoa học máy tính của bạn, vì vậy hãy tiếp tục đọc. ?? Biểu diễn số nguyên âm trong nhị phânPython sử dụng cái gọi là nhị phân bổ sung để biểu diễn các số nguyên âm. Bit đầu tiên của nhị phân bù là dấu (0. tích cực, 1. tiêu cực). Tất cả các bit còn lại mã hóa số. Bạn viết một số âm >>> 0 ^ -1 -1 >>> 0 ^ -3 -3 >>> -3 ^ -5 64 làm mẫu bit cho >>> 0 ^ -1 -1 >>> 0 ^ -3 -3 >>> -3 ^ -5 65 và lật tất cả các bit từ 1 thành 0 và từ 0 thành 1 (phần bù) Đây là hai ví dụ đơn giản
Hãy sử dụng kiến thức này trong một vài ví dụ để giới thiệu hoạt động của toán tử XOR bitwise trên các số nguyên âm Python Bitwise XOR ^ Ví dụ về số nguyên âmĐây là kết quả của toán tử XOR bitwise >>> 31 ^ 15 164 khi được áp dụng cho toán hạng số nguyên âm ví dụ >>> 31 ^ 15 165 và >>> 31 ^ 15 166x (int)y (int)x (nhị phân)y (nhị phân)x ^ y (nhị phân)x ^ y (int)0-1000000001111111111111111-10-3000000001111110111111101-3-3-51111110111111011000001106 Bạn có thể xem những ví dụ đó trong đoạn script sau >>> 0 ^ -1 -1 >>> 0 ^ -3 -3 >>> -3 ^ -5 6 Danh sách và tập hợp Bitwise XOR của PythonĐể thực hiện thao tác XOR theo bit trên tất cả các phần tử trong danh sách số nguyên nhất định, hãy nhập thư viện NumPy bằng cách sử dụng import numpy as np my_list = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_list) print(res) # 16 và gọi import numpy as np my_list = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_list) print(res) # 17 Đây là một ví dụ import numpy as np my_list = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_list) print(res) # 1 Bạn có thể xem phép tính trong bảng sau—hàng cuối cùng là kết quả của phép toán XOR theo bit trên tất cả các phần tử trong danh sách import numpy as np my_list = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_list) print(res) # 18 tương ứng với các nhị phân import numpy as np my_list = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_list) print(res) # 19, import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 10, import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 11, import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 12 và import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 13Pos 0Pos 1Pos 2Pos 3000100100011010001010001 Để tính toán điều này, bạn phải thực hiện XOR dọc theo từng cột nhất định, hai hàng cùng một lúc. Nếu chúng có các bit khác nhau, kết quả trung gian là 1, nếu không thì 0. Sau đó, bạn sử dụng kết quả và so sánh nó với hàng tiếp theo, v.v. Kết quả cuối cùng là 1 Ngoài ra, nếu bạn muốn thực hiện XOR theo bit trên tất cả các phần tử trong một tập hợp, bạn có thể sử dụng cùng một ý tưởng nhập thư viện NumPy bằng cách sử dụng import numpy as np my_list = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_list) print(res) # 16 và gọi import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 15 import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 1 Python Bitwise XOR BoolCác giá trị Boolean import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 16 và import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 17 có thể được biểu diễn ngữ nghĩa bằng một bit duy nhất import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 18 và import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 19. Do đó, nếu bạn áp dụng phép toán XOR theo bit trên hai giá trị Boolean bằng cách sử dụng >>> 31 ^ 15 164, thì kết quả là import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 16 khi và chỉ khi chính xác một trong các toán hạng là import numpy as np my_set = [1, 2, 3, 4, 5] res = np.bitwise_xor.reduce(my_set) print(res) # 16 Dưới đây là bốn cách để áp dụng toán tử XOR bitwise cho các giá trị Boolean >>> True ^ True False >>> True ^ False True >>> False ^ True True >>> False ^ False False Bài tập Python Bitwise XOR (Bằng nhau)Ký hiệu bằng sau toán tử OR theo bit ( >>> True ^ True False >>> True ^ False True >>> False ^ True True >>> False ^ False False3= y) thực hiện thao tác gán XOR theo bit. Nó tính toán XOR theo bit trước và gán kết quả cho biến >>> 31 ^ 15 165. Biểu thức gán XOR bitwise >>> True ^ True False >>> True ^ False True >>> False ^ True True >>> False ^ False False3= y là đường cú pháp cho >>> True ^ True False >>> True ^ False True >>> False ^ True True >>> False ^ False False6 y giống hệt nhau về mặt ngữ nghĩa. Giá trị trả về của toán tử là >>> True ^ True False >>> True ^ False True >>> False ^ True True >>> False ^ False False7 nhưng nó cập nhật toán hạng đầu tiên với kết quả của phép toán Ở đây bạn có thể thấy rằng biến >>> 31 ^ 15 165 thay đổi sau khi áp dụng toán tử gán >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 2 Đây là phiên bản giống hệt về mặt ngữ nghĩa của phiên bản này mà không có toán tử gán >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 2 Quá tải Bitwise XOR của PythonBạn có thể định nghĩa toán tử XOR bitwise của riêng mình trên một lớp tùy chỉnh bằng cách nạp chồng phương thức >>> True ^ True False >>> True ^ False True >>> False ^ True True >>> False ^ False False9 dunder cho phép biểu thức >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 20 trên các đối tượng tùy chỉnh của bạn Đây là một ví dụ class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 7 Ghi chú. nếu bạn quên ghi đè lên phương thức >>> True ^ True False >>> True ^ False True >>> False ^ True True >>> False ^ False False9 mà vẫn cố sử dụng biểu thức >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 22y, Python sẽ tăng một giá trị >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 23 >>> 31 ^ 15 160 đầu ra >>> 31 ^ 15 161 Để khắc phục điều này >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 24, chỉ cần xác định phương thức >>> True ^ True False >>> True ^ False True >>> False ^ True True >>> False ^ False False9 như trong ví dụ hoạt động trước đó Toán tử Bitwise và Phương pháp ma thuậtthực hiện các thao tác trên biểu diễn nhị phân (bit) của số nguyên. Bảng sau đây cung cấp tổng quan ngắn gọn về tất cả các toán tử bitwise hiện có. Lưu ý rằng chúng tôi cũng cung cấp biểu diễn nhị phân >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 26 cho số nguyên thập phân >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 27 và >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 28 cho số nguyên thập phân >>> x = 1 >>> y = 2 >>> x ^= y >>> x 3 >>> y 29 dưới dạng nhận xét ở cột bên phảiToán tử TênMô tảVí dụ_______63_______0&Bitwise ANDThực hiện logic AND trên cơ sở từng chút một >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 21. Bitwise ORThực hiện phép toán OR logic trên cơ sở từng bit >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 22~Bitwise NOTThực hiện logic NOT trên cơ sở từng bit, đảo ngược từng bit sao cho 0 trở thành 1 và 1 trở thành 0. Tương tự như >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 23. >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 24^Bitwise XORThực hiện phép toán logic “độc quyền hoặc” trên cơ sở từng bit >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 25>>Dịch chuyển phải theo từng bit Dịch chuyển nhị phân của toán hạng bên trái sang phải theo số lượng vị trí được chỉ định trong toán hạng bên phải >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 26< >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 28 >>> x = 1 >>> y = 2 >>> x = x ^ y >>> x 3 >>> y 29 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 70 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 71 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 72 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 73 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 74 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 75 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 76 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 77 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 78 class Data: def __init__(self, data): self.data = data def __xor__(self, other): return Data(self.data ^ other.data) x = Data(3) y = Data(4) res = x ^ y print(res.data) # 79 Đây là một ví dụ về cách thực hiện các toán tử bitwise này trên một lớp tùy chỉnh >>> 31 ^ 15 1600. Chúng tôi đã đánh dấu toán tử tương ứng này trong mã >>> 31 ^ 15 162 đầu ra là >>> 31 ^ 15 163 Chris Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners (NoStarch 2020), đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây Danh sách liên kết XOR trong Python là gì?Danh sách liên kết đôi hiệu quả bộ nhớ này được gọi là Danh sách liên kết XOR hoặc Hiệu quả bộ nhớ vì danh sách sử dụng thao tác XOR theo bit để tiết kiệm dung lượng cho một địa chỉ. Trong danh sách liên kết XOR, thay vì lưu trữ địa chỉ bộ nhớ thực tế, mỗi nút lưu trữ XOR địa chỉ của nút trước và nút tiếp theo.
Thao tác XOR được thực hiện như thế nào?XOR so sánh hai bit đầu vào và tạo một bit đầu ra . logic rất đơn giản. Nếu các bit giống nhau, kết quả là 0. Nếu các bit khác nhau, kết quả là 1. |