Toán tử so sánh Bit trong C



Các toán tử so sánh Bit được hỗ trợ bởi Ngôn ngữ C được liệt kê trong bảng dưới đây. Giả sử biến A giữ giá trị 60 và biến B giữ giá trị 13, thì khi đó:

Toán tử Miêu tả Ví dụ
& Toán tử AND (và) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong cả hai toán hạng. (A & B) sẽ cho kết quả là 12, tức là 0000 1100
| Toán tử OR (hoặc) nhị phân sao chép một bit tới kết quả nếu nó tồn tại trong một hoặc hai toán hạng. (A | B) sẽ cho kết quả là 61, tức là 0011 1101
^ Toán tử XOR nhị phân sao chép bit mà nó chỉ tồn tại trong một toán hạng mà không phải cả hai. (A ^ B) sẽ cho kết quả là 49, tức là 0011 0001
~ Toán tử đảo bit (đảo bit 1 thành bit 0 và ngược lại). (~A ) sẽ cho kết quả là -61, tức là 1100 0011.
<< Toán tử dịch trái. Giá trị toán hạng trái được dịch chuyển sang trái bởi số các bit được xác định bởi toán hạng bên phải. A << 2 sẽ cho kết quả 240, tức là 1111 0000 (dịch sang trái hai bit)
>> Toán tử dịch phải. Giá trị toán hạng trái được dịch chuyển sang phải bởi số các bit được xác định bởi toán hạng bên phải. A >> 2 sẽ cho kết quả là 15, tức là 0000 1111 (dịch sang phải hai bit)

Ví dụ

Bạn thử ví dụ sau để hiểu tất cả các toán tử so sánh bit có sẵn trong Ngôn ngữ C:

#include main()
{   unsigned int a = 60;	/* 60 = 0011 1100 */  
   unsigned int b = 13;	/* 13 = 0000 1101 */
   int c = 0;              c = a & b;       /* 12 = 0000 1100 */ 
   printf("1. Gia tri cua c la %d\n", c );   c = a | b;       /* 61 = 0011 1101 */
   printf("2. Gia tri cua c la %d\n", c );   c = a ^ b;       /* 49 = 0011 0001 */
   printf("3. Gia tri cua c la %d\n", c );   c = ~a;          /*-61 = 1100 0011 */
   printf("4. Gia tri cua c la %d\n", c );   c = a << 2;     /* 240 = 1111 0000 */
   printf("5. Gia tri cua c la %d\n", c );   c = a >> 2;     /* 15 = 0000 1111 */
   printf("6. Gia tri cua c la %d\n", c );
   printf("===========================\n");
   printf("VietJack chuc cac ban hoc tot! \n");
}

Biên dịch và thực thi chương trình C trên sẽ cho kết quả sau:

Toán tử so sánh bit trong C

Bạn có thể tự mình kiểm tra kết quả.

Các bài học lập trình C phổ biến khác tại VietJack:


toan_tu_trong_c.jsp