Toán tử bitwise
Phép toán thao tác bit là các hoạt động thao tác trực tiếp các bit của một số. Toán tử bitwise hữu ích cho các mục đích khác nhau, chẳng hạn như tối ưu hóa thuật toán, thực hiện các phép tính nhất định và thao tác bộ nhớ trong các ngôn ngữ lập trình cấp thấp hơn như C và C++. Dưới đây là tóm tắt nhanh về các thao tác bitwise phổ biến trong C++:
Bitwise VÀ (‘&’)
Phép toán AND theo bit (&) là phép toán nhị phân lấy hai số, so sánh chúng từng bit và trả về một số mới trong đó mỗi bit được đặt (1) nếu các bit tương ứng trong cả hai số đầu vào được đặt (1); mặt khác, bit không được đặt (0). Ví dụ:
int result = 5 & 3; // kết quả là 1 (0000 0101 & 0000 0011 = 0000 0001)
Bitwise HOẶC (|)
Phép toán OR theo bit (|) là phép toán nhị phân lấy hai số, so sánh chúng từng bit và trả về một số mới trong đó mỗi bit được đặt (1) nếu ít nhất một trong các bit tương ứng trong một trong hai số đầu vào được đặt (1); mặt khác, bit không được đặt (0). Ví dụ:
int result = 5 | 3; // result will be 7 (0000 0101 | 0000 0011 = 0000 0111)
Bitwise XOR (^)
Phép toán XOR theo bit (OR loại từ) (^) là phép toán nhị phân lấy hai số, so sánh chúng từng bit và trả về một số mới trong đó mỗi bit được đặt (1) nếu các bit tương ứng trong các số đầu vào khác nhau; mặt khác, bit không được đặt (0). Ví dụ:
int result = 5 ^ 3; // result will be 6 (0000 0101 ^ 0000 0011 = 0000 0110)
Bitwise NOT (~)
Phép toán NOT theo chiều bit (~) là phép toán đơn nguyên lấy một số duy nhất và trả về một số mới trong đó mỗi bit được đảo ngược (1 trở thành 0 và 0 trở thành 1). Ví dụ:
int result = ~5; // kết quả là -6 (1111 1010)
Bitwise shift trái (<<)
Hoạt động dịch chuyển trái theo chiều bit (<<) là một hoạt động nhị phân lấy hai số, một giá trị và một lượng dịch chuyển, đồng thời trả về một số mới bằng cách dịch chuyển các bit của giá trị sang trái theo lượng dịch chuyển đã chỉ định. Các bit trống được lấp đầy bằng số không.
Ví dụ:
int result = 5 << 1; // kết quả là 10 (0000 0101 << 1 = 0000 1010)
Bitwise shift phải (>>)
Thao tác dịch chuyển phải theo chiều bit (>>) là một thao tác nhị phân lấy hai số, một giá trị và một lượng dịch chuyển, đồng thời trả về một số mới bằng cách dịch chuyển các bit của giá trị sang phải theo lượng dịch chuyển đã chỉ định. Các bit bị bỏ trống được lấp đầy bằng số 0 hoặc bit dấu tùy thuộc vào giá trị đầu vào được ký hoặc không dấu.
Ví dụ:
int result = 5 >> 1; // kết quả là 2 (0000 0101 >> 1 = 0000 0010)
Đây là những hoạt động bitwise phổ biến nhất trong C++. Hãy nhớ sử dụng chúng một cách cẩn thận và hiểu hành vi của chúng khi áp dụng cho các loại dữ liệu và tình huống cụ thể.