Với biến A và biến B mang giá trị kiểu Boolean, bảng sau là các toán tử logic được cung cấp bởi C#.
Operator | Description | Example |
&& | Gọi toán tử login AND, nếu cả hai toán hạng đều đúng thì điều kiện đó đúng. | (A && B) is false. |
|| | Gọi toán tử logic OR, nếu cả hai toán hạng đều sai thì điều kiện đó sai. | (A || B) is true. |
! | Gọi toán tử logic NOT, dùng để đảo trạng thái logic của toán hạng. Nếu một điều kiện đúng sẽ chuyển thành sai khi dùng toán tử này. | !(A && B) is true. |
Ví dụ:
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { bool a = true; bool b = true; if (a && b) { Console.WriteLine("Line 1 - Condition is true"); } if (a || b) { Console.WriteLine("Line 2 - Condition is true"); } /* lets change the value of a and b */ a = false; b = true; if (a && b) { Console.WriteLine("Line 3 - Condition is true"); } else { Console.WriteLine("Line 3 - Condition is not true"); } if (!(a && b)) { Console.WriteLine("Line 4 - Condition is true"); } Console.ReadLine(); } } }
Kết quả sau khi chạy chương trình trên:
-
Toán tử trên bit
Toán tử trên bit làm việc trên các bit. Bảng sau đây là bảng sự thật các toán tử trên bit:
p | q | p & q | p | q | p ^ q |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Với A=60, B=13, Chuyển hai số này sang nhị phân được:
- A = 0011 1100
- B = 0000 1101
Ta có:
Operator | Description | Example |
& | Toán tử nhị phân AND, copy bit 1 vào kết quả nếu nó tồn tại trong cả 2 toán hạng | (A & B) = 12, tương đương 0000 1100 |
| | Toán tử nhị phân OR, copy bit 1 vào kết quả nếu nó tồn tại trong 1 trong 2 toán hạng. | (A | B) = 61, tương đương 0011 1101 |
^ | Toán tử nhị phân XOR, copy bit 1 vào kết quả nếu nó chỉ tồn tại trong 1 trong 2 toán hạng | (A ^ B) = 49, tương đương 0011 0001 |
~ | Toán tử nhị phân bù 1 có tác dụng đảo bit | (~A ) = 61, tương đương 1100 0011 |
<< | Toán tử nhị phân dịch trái, dịch bit sang trái một số lượng bit bằng toán hạng bên phải. | A << 2 = 240, tương đương 1111 0000 |
>> | Toán tử nhị phân dịch phải, dịch bit sang phải một số lượng bit bằng toán hạng bên phải. | A >> 2 = 15, tương đương 0000 1111 |
Ví dụ:
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ Console.WriteLine("Line 1 - Value of c is {0}", c ); c = a | b; /* 61 = 0011 1101 */ Console.WriteLine("Line 2 - Value of c is {0}", c); c = a ^ b; /* 49 = 0011 0001 */ Console.WriteLine("Line 3 - Value of c is {0}", c); c = ~a; /*-61 = 1100 0011 */ Console.WriteLine("Line 4 - Value of c is {0}", c); c = a << 2; /* 240 = 1111 0000 */ Console.WriteLine("Line 5 - Value of c is {0}", c); c = a >> 2; /* 15 = 0000 1111 */ Console.WriteLine("Line 6 - Value of c is {0}", c); Console.ReadLine(); } } }
Kết quả:
-
Toán tử gán
Operator | Description | Example |
= | Gán giá trị toán hạng bên phải cho toán hạng bên trái | C = A + B assigns value of A + B into C |
+= | Cộng toán hạng bên trái và toán hạng bên phải, gán kết quả cho toán hạng bên trái. | C += A is equivalent to C = C + A |
-= | Toán hạng bên trái trừ toán hạng bên phải và gán kết quả này cho toán hạng bên trái. | C -= A is equivalent to C = C – A |
*= | Nhân 2 toán hạng và gán kết quả này cho toán hạng bên trái. | C *= A is equivalent to C = C * A |
/= | Toán hạng bên trái chia toán hạng bên phải và gán kết quả này cho toán hạng bên trái. | C /= A is equivalent to C = C / A |
%= | Toán hạng bên trái chia lấy dư toán hạng bên phải và gán kết quả này cho toán hạng bên trái. | C %= A is equivalent to C = C % A |
<<= | Toán tử dịch trái. | C <<= 2 is same as C = C << 2 |
>>= | Toán tử dịch phải | C >>= 2 is same as C = C >> 2 |
&= | Toán tử AND trên bit | C &= 2 is same as C = C & 2 |
^= | Toán tử gán và OR loại trừ trên bit | C ^= 2 is same as C = C ^ 2 |
|= | Toán tử gán và OR bao hàm trên bit | C |= 2 is same as C = C | 2 |
Ví dụ:
using System; namespace OperatorsAppl { class Program { static void Main(string[] args) { int a = 21; int c; c = a; Console.WriteLine("Line 1 - = Value of c = {0}", c); c += a; Console.WriteLine("Line 2 - += Value of c = {0}", c); c -= a; Console.WriteLine("Line 3 - -= Value of c = {0}", c); c *= a; Console.WriteLine("Line 4 - *= Value of c = {0}", c); c /= a; Console.WriteLine("Line 5 - /= Value of c = {0}", c); c = 200; c %= a; Console.WriteLine("Line 6 - %= Value of c = {0}", c); c <<= 2; Console.WriteLine("Line 7 - <<= Value of c = {0}", c); c >>= 2; Console.WriteLine("Line 8 - >>= Value of c = {0}", c); c &= 2; Console.WriteLine("Line 9 - &= Value of c = {0}", c); c ^= 2; Console.WriteLine("Line 10 - ^= Value of c = {0}", c); c |= 2; Console.WriteLine("Line 11 - |= Value of c = {0}", c); Console.ReadLine(); } } }
Kết quả:
-
Toán tử hỗn hợp (Xem tiếp trang sau)