2.4.6 Thao tác với bit đơn lẻ (1)

Các toán tử logic sử dụng các đối số đầu vào mà không cần quan tâm chúng chứa bao nhiêu bit. Các toán tử chỉ biết các giá trị 0 (khi tất cả các bit được reset), có nghĩa là “false”, hoặc khác 0 (khi ít nhất một bit được set bằng 1), có nghĩa là “true”. Kết quả của các toán tử cũng chỉ có thể nhận giá trị 0 (false) hoặc 1 (true).

Tuy nhiên, có bốn toán tử cho phép bạn thao tác một bit dữ liệu. Chúng được gọi là toán tử bitwise.

  • & (bitwise conjunction) : Phép AND
  • | (bitwise disjunction): Phép OR
  • ~ (bitwise negation): Phép NOT
  • ^ (bitwise exclusive): Phép XOR

Có thể giải thích đơn giản hơn như sau:

  • & yêu cầu chính xác hai bit giá trị “1” để có kết quả là “1”
  • | đòi hỏi ít nhất một bit “1” để có kết quả là “1”
  • ^ yêu cầu chính xác một bit “1” để có kết quả là “1”

Có một số chú ý quan trọng cần đề cập ở đây: đối số của các toán tử này phải là các số nguyên (int cũng như long, short hoặc char); chúng ta không thể sử dụng float ở đây.

Sự khác biệt giữa toán tử logic và toán tử bit là rất quan trọng: các toán tử logic không xâm nhập vào mức bit của đối số của nó. Chúng chỉ quan tâm đến giá trị số nguyên cuối cùng. Các toán tử Bitwise chặt chẽ hơn: chúng xử lý từng bit một cách riêng biệt. Giả sử rằng biến int chiếm 32 bits, bạn có thể tưởng tượng toán tử bitwise như là một phép đánh giá 32 lần của toán tử logic cho mỗi cặp bit của đối số.