Tử khóa nào dụng với ý nghĩa là toán tử phủ định trong python

Hầu hết các ngôn ngữ lập trình, bao gồm cả C, C++, Java, và Python đều cung cấp kiểu dữ liệu boolean, có thể mang giá trị True (đúng) hoặc False.

Chúng ta cùng xét các đoạn chương trình ví dụ sau đây, chúng đều sử dụng toán tử Logical Not (phủ định logic) trên các giá trị boolean, cú pháp của toán tử này là dấu !


# A Python program that uses Logical Not or ! on boolean 
a = not True
b = not False
print a 
print b 
# Output: False 
#         True 

Kết quả đầu ra của các đoạn chương trình trên đều giống như mong đợi, nhưng kết quả của các ví dụ bên dưới đây có thể sẽ không như mong đợi nếu chúng ta chưa từng sử dụng toán tử Bitwise Not (phủ định chuỗi bits) trước đó (cú pháp của toán tử này là dấu ~).


# A Python program that uses Bitwise Not or ~ on boolean 
a = True
b = False
print ~a 
print ~b 
-2
-1

Lý do: Toán tử phủ định bit ~ sẽ trả về “số phần bù với 1” của một số.

- Ví dụ 1:
a = 10 = 1010 (Hệ nhị phân)
~a = ~1010
   = -(1010 + 1)
   = -(1011)
   = -11 (Hệ thập phân)
- Ví dụ 2:
b = 1 = 01 (Hệ nhị phân) (thật ra nó là 00000001, nhưng viết là 01 cho gọn)
~b = ~01
    = -(01 + 1)
    = -(10)
    = -2 (Hệ thập phân)
- Ví dụ 3:
c = 0 = 0 (Hệ nhị phân) (thật ra nó là 00000000, nhưng viết là 0 cho gọn)
~c = ~0
    = -(0 + 1)
   = -(1)
   = -1

Từ ví dụ 2ví dụ 3, ta đã hiểu được vì sao mà a = True sau đó print ~a mà kết quả lại là -2, và vì sao mà b = False sau đó print ~b lại được kết quả -1

Java không cho phép áp dụng toán tử ~ trên các giá trị boolean. Ví dụ, đoạn code sau đây sẽ gây lỗi trình biên dịch

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: 
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

// A Java program that uses Bitwise Not or ~ on boolean 
import java.io.*; 
  
class GFG 
{ 
    public static void main (String[] args) 
    { 
        boolean a = true, b = false; 
        System.out.println(~a); 
        System.out.println(~b); 
    } 
} 

Kết quả

6: error: bad operand type boolean for unary operator '~'
        System.out.println(~a);
                           ^
7: error: bad operand type boolean for unary operator '~'
        System.out.println(~b);
                           ^
2 errors

Kết luận

“Toán tử phủ định logic, hay ký hiệu là !” được sử dụng cho các giá trị boolean, còn “Toán tử phủ định chuỗi bit, hay ký hiệu là ~” được áp dụng cho các giá trị số nguyên (integers). Các ngôn ngữ lập trình như C/C++ và Python sẽ tự động coi giá trị boolean thành giá trị integer khi một toán tử dành cho kiểu integer được áp dụng. Nhưng Java không cho phép điều đó.

  • Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
  • Ebook về python tại đây.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

  • Group Facebook
  • Fanpage
  • Youtube
  • Instagram
  • Twitter
  • Linkedin
  • Pinterest
  • Trang chủ

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!

Toán tử được sử dụng để thao tác với giá trị và các biến. Toán tử có thể làm việc với các đối tượng riêng biệt và trả về kết quả. Dữ liệu được gọi là toán hạng hoặc đối số. Toán tử được đại diện bởi các từ khóa hoặc các ký tự đặc biệt. Ví dụ: đối với các toán tử định danh, chúng ta sử dụng từ khóa "is" và "is not".

Trong bài này, chúng ta sẽ tìm hiểu các toán tử bao gồm:

  • Toán tử số học

  • Toán tử so sánh

  • Toán tử gán

  • Toán tử logic hoặc toán tử bitwise

  • Toán tử thành viên

  • Toán tử định danh

  • Độ ưu tiên toán tử

Toán tử số học

Toán tử số học thực hiện các phép tính số học khác nhau như cộng, trừ, nhân, chia, tìm phần dư, số mũ, v.v. Có nhiều phương pháp khác nhau để tính toán số học trong Python như sử dụng hàm eval, khai báo biến & tính toán hoặc gọi hàm.

Ví dụ: Đối với các toán tử số học, chúng ta sẽ lấy ví dụ đơn giản về phép cộng hai chữ số: 4 + 5 = 9

x= 4
y= 5
print(x + y)

Tương tự, bạn có thể sử dụng các toán tử số học khác như phép nhân (*), phép chia (/), phép trừ (-), v.v.

Toán tử so sánh

Toán tử này sẽ so sánh giá trị toán hạng nằm hai bên và xác định mối quan hệ giữa chúng. Nó cũng được gọi là toán tử quan hệ. Các toán tử so sánh khác là (== ,! =, <>,>, <=,...)

Ví dụ: Đối với toán tử so sánh, chúng ta sẽ so sánh giá trị của x với giá trị của y và in kết quả đúng hoặc sai. Ví dụ ở đây giá trị x = 4 nhỏ hơn y = 5, vì vậy khi chúng ta in ra x > y, chương trình sẽ so sánh giá trị của x và y, và vì x nhỏ hơn y nên kết quả trả về là sai.

x = 4
y = 5
print(('x > y is',x>y))

Tương tự, bạn có thể thử các toán tử so sánh khác (x < y, x == y, x != y,...)

Toán tử gán trong Python

Toán tử gán trong Python được sử dụng để gán giá trị của toán hạng bên phải cho toán hạng bên trái. Các toán tử gán khác nhau được sử dụng trong Python là (+=, -=, *=, /=, ...)

Ví dụ: Gán giá trị:

num1 = 4
num2 = 5

print(("Line 1 - Value of num1 : ", num1))
print(("Line 2 - Value of num2 : ", num2))

Ví dụ về toán tử gán phức hợp

Chúng ta cũng có thể sử dụng toán tử gán phức hợp, trong đó bạn có thể cộng, trừ, nhân toán hạng bên phải sang trái kèm theo phép gán (hoặc bất kỳ hàm số học nào khác) cho toán hạng bên trái.

  • Bước 1: Gán giá trị cho num1 và num2

  • Bước 2: Cộng giá trị của num1 và num2 (4 + 5 = 9)

  • Bước 3: Cộng num1 vào đầu ra của Bước 2 (9 + 4)

  • Bước 4: Chương trình sẽ in kết quả cuối cùng là 13

num1 = 4
num2 = 5

res = num1 + num2
res += num1

print(("Line 1 - Result of + is ", res))

Toán tử logic

Toán tử logic trong Python được sử dụng cho các câu lệnh điều kiện là đúng hoặc sai. Toán tử logic trong Python bao gồm AND, OR và NOT. Các điều kiện sau được áp dụng cho toán tử logic:

  • Đối với toán tử AND - Nó trả về TRUE nếu cả hai toán hạng (bên phải và bên trái) đều đúng

  • Đối với toán tử OR - Nó trả về TRUE nếu một trong hai toán hạng (bên phải hoặc bên trái) là đúng

  • Đối với toán tử NOT - trả về TRUE nếu toán hạng là sai

Ví dụ: Trong ví dụ dưới đây, chúng ta nhận được kết quả đúng (True) hoặc sai (False) dựa trên giá trị của a và b.

a = True
b = False

print(('a and b is',a and b))
print(('a or b is',a or b))
print(('not a is',not a))

Toán tử thành viên

Các toán tử này kiểm tra tư cách thành viên trong một tập như danh sách, chuỗi hoặc tuple. Có hai toán tử thành viên được sử dụng trong Python là (in, not in). Kết quả trả về phụ thuộc vào việc biến có tồn tại trong chuỗi hoặc tập cho trước hay không.

Ví dụ : Kiểm tra giá trị của x = 4 và y = 8 có sẵn trong danh sách hay không bằng cách sử dụng toán tử in not in.

x = 4
y = 8
list = [1, 2, 3, 4, 5 ];
if ( x in list ):
   print("Line 1 - x is available in the given list")
else:
   print("Line 1 - x is not available in the given list")
if ( y not in list ):
   print("Line 2 - y is not available in the given list")
else:
   print("Line 2 - y is available in the given list")
  • Khai báo giá trị cho x và y

  • Khai báo giá trị của danh sách

  • Sử dụng toán tử "in" với câu lệnh if để kiểm tra giá trị của x hiện có trong danh sách hay không và in ra kết quả tương ứng

  • Sử dụng toán tử "not in" với câu lệnh if để kiểm tra giá trị của y hiện có trong danh sách hay không và in kết quả tương ứng

  • Khi chương trình chạy, nó sẽ in ra kết quả như mong muốn.

Toán tử định danh

Để so sánh vị trí bộ nhớ của hai đối tượng, toán tử định danh được sử dụng. Hai toán tử định danh được sử dụng trong Python là (is, is not).

  • Toán tử is: Nó trả về đúng (True) nếu hai biến cùng trỏ tới một đối tượng và trả về sai (False) trong trường hợp ngược lại.

  • Toán tử is not: Nó trả về sai (False) nếu hai biến cùng trỏ một đối tượng và trả về đúng (True) trong trường hợp ngược lại.

Các toán tử sau được sắp xếp theo thứ tự ưu tiên giảm dần.

Các toán tử nằm trong cùng một ô sẽ có được tính từ trái sang phải.

Toán tử (độ ưu tiên giảm dần)

Ý nghĩa

**

Số mũ

*, /, //,%

Nhân, chia, tính phần nguyên, tính số dư

+, -

Phép cộng, phép trừ

<= <>> = =

Toán tử so sánh

=% = / = // = - = + = * = ** =

Toán tử gán

is is not

Toán tử định danh

in not in

Toán tử thành viên

not or and

Toán tử logic

Ví dụ:

x = 20
y = 20
if ( x is y ): 
	print("x & y  SAME identity")
y=30
if ( x is not y ):
	print("x & y have DIFFERENT identity")
  • Khai báo giá trị cho biến x và y

  • Sử dụng toán tử "is" để kiểm tra xem giá trị của x có giống y không

  • Tiếp theo chúng ta sử dụng toán tử "is not" để kiểm tra xem giá trị của x có khác giá trị của y hay không.

  • Chạy chương trình sẽ thu được kết quả trả về như mong muốn.

Thứ tự ưu tiên

Thứ tự ưu tiên sẽ xác định toán tử nào được thực hiện trước. Để tránh sự nhập nhằng trong các giá trị, thứ tự ưu tiên các toán tử là cần thiết. Giống như trong các phép tính thông thường, phép nhân có độ ưu tiên cao hơn phép cộng. Ví dụ: trong 3+ 4 * 5, câu trả lời là 23. Để thay đổi thứ tự ưu tiên, chúng ta sử dụng dấu ngoặc đơn (3 + 4) * 5, bây giờ câu trả lời là 35. Xem chi tiết các toán tử và độ ưu tiên ở bảng trên.

v = 4
w = 5
x = 8
y = 2
z = 0

z = (v+w) * x / y;
print("Value of (v+w) * x/ y is ", z)
  • Khai báo giá trị của biến v, w…z

  • Áp dụng công thức và chạy chương trình.

  • Chương trình sẽ thực thi và tính toán các biến với độ ưu tiên cao hơn rồi đưa ra kết quả.

Ví dụ sử dụng Python 2

Các ví dụ ở trên sử dụng Python 3, nếu bạn muốn sử dụng Python 2, hãy dùng đoạn mã nguồn dưới đây:

#Arithmetic Operators
x= 4	
y= 5
print x + y

#Comparison Operators
x = 4
y = 5
print('x > y  is',x>y)

#Assignment Operators
num1 = 4
num2 = 5
print ("Line 1 - Value of num1 : ", num1)
print ("Line 2 - Value of num2 : ", num2)

#compound assignment operator
num1 = 4
num2 = 5
res = num1 + num2
res += num1
print ("Line 1 - Result of + is ", res)

#Logical Operators
a = True
b = False
print('a and b is',a and b)
print('a or b is',a or b)
print('not a is',not a)

#Membership Operators
x = 4
y = 8
list = [1, 2, 3, 4, 5 ];
if ( x in list ):
   print "Line 1 - x is available in the given list"
else:
   print "Line 1 - x is not available in the given list"
if ( y not in list ):
   print "Line 2 - y is not available in the given list"
else:
   print "Line 2 - y is available in the given list"

#Identity Operators
x = 20
y = 20
if ( x is y ):
	print "x & y  SAME identity"
y=30
if ( x is not y ):
	print "x & y have DIFFERENT identity"

#Operator precedence
v = 4
w = 5
x = 8
y = 2
z = 0
z = (v+w) * x / y;   
print "Value of (v+w) * x/ y is ",  z

Tổng kết

Toán tử trong một ngôn ngữ lập trình được sử dụng để thực thi các thao tác khác nhau trên giá trị hoặc các biến. Trong Python, bạn có thể sử dụng toán tử như sau:

  • Có nhiều phương pháp khác nhau để tính toán số học trong Python như sử dụng hàm eval, khai báo biến & tính toán hoặc gọi hàm.

  • Toán tử so sánh thường được gọi là toán tử quan hệ vì chúng được sử dụng để so sánh giá trị nằm hai bên và xác địch mối quan hệ giữa chúng.

  • Toán tử gán chỉ đơn giản là gán giá trị cho biến.

  • Python cũng cho phép bạn sử dụng toán tử gán phức hợp, trong phép tính số học phức tạp, trong đó bạn có thể gán kết quả của một toán hạng này cho toán hạng khác.

  • Đối với toán tử AND - Nó trả về TRUE nếu cả hai toán hạng (bên phải và bên trái) đều đúng.

  • Đối với toán tử OR - Nó trả về TRUE nếu một trong hai toán hạng (bên phải hoặc bên trái) là đúng.

  • Đối với toán tử NOT - trả về TRUE nếu toán hạng là sai.

  • Có hai toán tử thành viên được sử dụng trong Python (in, not in).

  • Nó đưa ra kết quả dựa trên biến có trong tập hợp hoặc chuỗi cho trước hay không.

  • Toán tử định danh được sử dụng trong Python là (is, is not).

  • Nó trả về đúng (True) nếu hai biến trỏ cùng một đối tượng và sai (False) trong trường hợp ngược lại.

  • Toán tử ưu tiên sẽ có ích trong trường hợp bạn cần tính toán một biểu thức phức tạp theo một thứ tự ưu tiên nhất định.