Bài 08: Các toán tử (Operators) trong C#

0

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:3

  1. 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ả:4

  1. 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ả:5

  1. Toán tử hỗn hợp (Xem tiếp trang sau)