Toán tử logic, toán tử trên bit và toán tử gán trong C++

Đây là bài 12/43 bài của series môn học Nhập môn lập trình

1. Toán tử logic

Những toán tử này được áp dụng cho kiểu luận lý (bool). Kết quả của toán tử logic trả về true (1) hoặc false (0). Các toán tử logic là AND (&&), OR (||), NOT (!).

Toán tử AND (&&)

Gọi là toán tử “”. Nếu cả hai toán hạng đều có giá trị true thì kết quả là true. Những trường hợp khác kết quả là false.

aba && b
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

Toán tử OR (||)

Gọi là toán tử “hoặc”. Chỉ cần một toán hạnggiá trị true thì kết quả là true. Nếu cả hai toán hạngfalse thì kết quả mới là false.

aba || b
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

Toán tử NOT (!)

Gọi là toán tử “phủ định”. Sử dụng để đảo ngược lại trạng thái logic của toán hạng đó. Nếu toán hạngtrue thì phủ định của nó sẽ là false. Nếu toán hạngfalse thì phủ định của nó sẽ là true.

Chương trình minh họa toán tử logic

#include <iostream> 
using namespace std; 
int main() 
{
	int a = 5, b = 5, c = 10, result;
	
	result = (a == b) && (c > b);
	cout<<"(a == b) && (c > b) is "<<result<<endl;

	result = (a == b) && (c < b);
	cout<<"(a == b) && (c < b) is "<<result<<endl;

	result = (a == b) || (c < b);
	cout<<"(a == b) || (c < b) is "<<result<<endl;

	result = (a != b) || (c < b);
	cout<<"(a != b) || (c < b) is "<<result<<endl;

	result = !(a != b);
	cout<<"!(a != b) is "<<result<<endl;

	result = !(a == b);
	cout<<"!(a == b) is "<<result<<endl;
	system("pause");
}
Kết quả:
(a == b) && (c > b) is 1
(a == b) && (c < b) is 0
(a == b) || (c < b) is 1
(a != b) || (c < b) is 0
!(a != b) is 1
!(a == b) is 0

2. Toán tử trên bit

Toán tử trên bit tác động lên các bit của toán hạng và xử lý cho từng bit của toán hạng.

Có các toán tử trên bit

Ký hiệuÝ nghĩaKiểu áp dụngVí dụ
&AND trên bitKiểu sốa & b
|OR trên bitKiểu sốa | b
^XOR trên bitKiểu sốa ^ b
~Phủ định trên bitKiểu số~a
<<Dịch trái chuỗi bitKiểu sốa << 2
>>Dịch phải chuỗi bitKiểu sốa >> 2

Toán tử AND

ABA & B
000
010
100
111

Toán tử AND trả về giá trị 1 nếu cả hai toán hạng đều có giá trị 1. Ví dụ:

A            0000 1100
B            0101 0101
C = A & B    0000 0100

Toán tử OR

ABA | B
000
011
101
111

Toán tử OR trả về giá trị 0 nếu cả hai toán hạng đều có giá trị 0. Ví dụ:

A            0000 1100
B            0101 0101
C = A | B    0101 1101

Toán tử XOR

ABA ^ B
000
011
101
110

Toán tử XOR trả về giá trị 0 nếu cả hai toán hạng có cùng giá trị, cùng giá trị 1 hoặc cùng giá trị 0. Ví dụ:

A            0000 1100
B            0101 0101
C = A ^ B    0101 1001

Toán tử NOT

A~A
01
10

Toán tử NOT đảo bit 1 thành 0 và ngược lại. Ví dụ:

A         0000 1100
B = ~A    1111 0011

Toán tử dịch trái và toán tử dịch phải

Trong dịch chuyển số học, các bit được dịch chuyển ra khỏi bit đầu hoặc bit đuôi sẽ bị loại bỏ. Trong phép dịch chuyển số học về bên trái, các số 0 được dịch chuyển vào bên phải. Trong phép dịch chuyển số học bên phải, bit thể hiện dấu được thêm vào bên trái, do đó dấu của số được giữ nguyên.

Toán tử dịch bit phải
Toán tử dịch bitt phải
Toán tử dịch bit trái
Toán tử dịch bit trái
Ví dụ:
int a=23;
a<<1;
/*Dịch chuyển trái
   00010111 (số thập phân +23)
=   00101110 (số thập phân +46)*/
int b=-105;
b>>1;
/*Dịch chuyển phải
  10010111 (số thập phân -105)
=11001011 (số thập phân -53)*/
int c=23;
c<<2;
/*Dịch sang trái 2 lần
   00010111 (số thập phân +23)
=    01011100 (số thập phân +92)*/

3. Toán tử gán

Toán tử gán dùng để gán giá trị cho biến, ký hiệu là “=”. Câu lệnh gán sẽ đặt giá trị vào vùng nhớ của biến.

Các toán tử gán:

Ký hiệuÝ nghĩaKiểu áp dụngVí dụTương đương
=Phép gán A = BTất cả các kiểui = 5i = 5
+=Tương đương A = A+BCác kiểu sối += 3i = i + 3
-=Tương đương A = A-BCác kiểu sối -= 3i = i – 3
*=Tương đương A = A*BCác kiểu sối *= 3i = i * 3
/=Tương đương A = A/BCác kiểu sối /= 3i = i / 3
%=Tương đương A = A%BKiểu số nguyêni %= 3i = i % 3

Chương trình C++ minh họa toán tử gán

#include <iostream> 
using namespace std; 
int main() 
{
	int a = 5, c;
	c = a; // c is 5
	cout<<"c = "<<c<<endl;
	c += a; // c is 10 
	cout<<"c = "<<c<<endl;
	c -= a; // c is 5
	cout<<"c = "<<c<<endl;
	c *= a; // c is 25
	cout<<"c = "<<c<<endl;
	c /= a; // c is 5
	cout<<"c = "<<c<<endl;
	c %= a; // c = 0
	cout<<"c = "<<c<<endl;
	system("pause");
}
Kết quả:
c = 5
c = 10
c = 5
c = 25
c = 5
c = 0

Lưu ý: Không được nhầm lẫn toán tử gán “=” với toán tử so sánh bằng “= =”.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Toán tử số học và toán tử quan hệ trong C++Biểu thức và thứ tự ưu tiên của các toán tử trong biểu thức >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.