Toán tử bitwise trong python là gì

Trong phần trước, chúng ta đã bắt đầu xem xét ngữ nghĩa của các biến và đối tượng Python; . Đến cuối phần này, bạn sẽ có các công cụ cơ bản để bắt đầu so sánh và thao tác trên dữ liệu trong Python

Các phép tính toán học

Python thực hiện bảy toán tử số học nhị phân cơ bản, hai trong số đó có thể nhân đôi dưới dạng toán tử đơn nguyên. Chúng được tóm tắt trong bảng sau

OperatorNameDescription
# Floor division
print[11 // 2]
9AdditionSum of
5
0 and
5
1
5
2SubtractionDifference of
5
0 and
5
1
5
5MultiplicationProduct of
5
0 and
5
1
5
8True divisionQuotient of
5
0 and
5
1
bin[10]
1Floor divisionQuotient of
5
0 and
5
1, removing fractional parts
bin[10]
4ModulusInteger remainder after division of
5
0 by
5
1
bin[10]
7Exponentiation
5
0 raised to the power of
5
1
'0b1010'
0NegationThe negative of
5
0
'0b1010'
2Unary plus
5
0 unchanged [rarely used]

Các toán tử này có thể được sử dụng và kết hợp theo cách trực quan, sử dụng dấu ngoặc đơn tiêu chuẩn để nhóm các hoạt động. Ví dụ

Trong 1]

# addition, subtraction, multiplication
[4 + 8] * [6.5 - 3]

Ra[1]

42.0

Phép chia tầng là phép chia thực có phần phân số bị cắt bớt

Trong 2]

# True division
print[11 / 2]

5.5

Trong 3]

# Floor division
print[11 // 2]

5

Toán tử chia tầng đã được thêm vào Python 3;

Cuối cùng, tôi sẽ đề cập đến toán tử số học thứ tám đã được thêm vào Python 3. 5. toán tử

'0b1010'
5, dùng để chỉ ra tích ma trận của
5
0 và
5
1, để sử dụng trong các gói đại số tuyến tính khác nhau

Hoạt động theo bit

Ngoài các phép toán số tiêu chuẩn, Python bao gồm các toán tử để thực hiện các phép toán logic bit trên số nguyên. Chúng ít được sử dụng hơn nhiều so với các phép toán số học tiêu chuẩn, nhưng thật hữu ích khi biết rằng chúng tồn tại. Sáu toán tử bitwise được tóm tắt trong bảng sau

OperatorNameDescription
'0b1010'
8Bitwise ANDBits defined in both
5
0 and
5
1
bin[4]
1Bitwise ORBits defined in
5
0 or
5
1 or both
bin[4]
4Bitwise XORBits defined in
5
0 or
5
1 but not both
bin[4]
7Bit shift leftShift bits of
5
0 left by
5
1 units
'0b100'
0Bit shift rightShift bits of
5
0 right by
5
1 units
'0b100'
3Bitwise NOTBitwise negation of
5
0

Các toán tử bitwise này chỉ có ý nghĩa về mặt biểu diễn nhị phân của các số mà bạn có thể thấy bằng cách sử dụng hàm

'0b100'
5 tích hợp

Trong [4]

bin[10]

Ra[4]

'0b1010'

Kết quả có tiền tố là

'0b100'
6, biểu thị biểu diễn nhị phân. Các chữ số còn lại cho biết số 10 được biểu thị dưới dạng tổng $1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 0 \cdot 2^0$. Tương tự, chúng ta có thể viết

Trong [5]

bin[4]

Ra[5]

'0b100'

Bây giờ, sử dụng OR theo bit, chúng ta có thể tìm số kết hợp các bit của 4 và 10

Trong [6]

42.0
0

Ra[6]

42.0
1

Trong [7]

42.0
2

Ra[7]

42.0
3

Các toán tử bitwise này không hữu ích ngay lập tức như các toán tử số học tiêu chuẩn, nhưng sẽ hữu ích nếu bạn nhìn thấy chúng ít nhất một lần để hiểu chúng thực hiện loại phép toán nào. Đặc biệt, người dùng từ các ngôn ngữ khác đôi khi bị cám dỗ sử dụng XOR [i. e. ,

bin[4]
4] khi chúng thực sự có nghĩa là lũy thừa [i. e. ,
bin[10]
7]

Hoạt động chuyển nhượng

Chúng ta đã thấy rằng các biến có thể được gán với toán tử "

'0b100'
9" và các giá trị được lưu trữ để sử dụng sau này. Ví dụ

Trong [8]

42.0
4

42.0
5

Chúng ta có thể sử dụng các biến này trong các biểu thức với bất kỳ toán tử nào đã đề cập trước đó. Ví dụ, để thêm 2 vào

5
0, chúng ta viết

Trong [9]

42.0
6

Ra[9]

42.0
7

Chúng tôi có thể muốn cập nhật biến

5
0 với giá trị mới này; . Bởi vì loại phép toán và phép gán kết hợp này rất phổ biến, Python bao gồm các toán tử cập nhật tích hợp sẵn cho tất cả các phép toán số học

Trong [10]

42.0
8

42.0
9

Có một toán tử gán tăng cường tương ứng với từng toán tử nhị phân được liệt kê trước đó;

42.0
03_______26_______04
42.0
05
42.0
06
42.0
07
42.0
08
42.0
09
42.0
10
42.0
11
42.0
12
42.0
13
42.0
14

Mỗi cái tương đương với phép toán tương ứng theo sau là phép gán. nghĩa là, đối với bất kỳ toán tử nào "

42.0
15", biểu thức
42.0
16 tương đương với
42.0
17, với một chút bắt. Đối với các đối tượng có thể thay đổi như danh sách, mảng hoặc DataFrames, các hoạt động gán tăng cường này thực sự khác biệt một cách tinh tế so với các đối tác dài dòng hơn của chúng. họ sửa đổi nội dung của đối tượng ban đầu thay vì tạo một đối tượng mới để lưu trữ kết quả

Hoạt động so sánh

Một loại hoạt động khác có thể rất hữu ích là so sánh các giá trị khác nhau. Đối với điều này, Python thực hiện các toán tử so sánh tiêu chuẩn, trả về các giá trị Boolean

42.0
18 và
42.0
19. Các hoạt động so sánh được liệt kê trong bảng sau

Hoạt động Mô tả Hoạt động Mô tả_______26_______20
5
0 bằng với
5
1
42.0
23
5
0 không bằng với
5
1
42.0
26
5
0 nhỏ hơn hoặc bằng với
5
1
42.0
29
5
0 lớn hơn
5
1
42.0
32
5
0 nhỏ hơn hoặc bằng với
5
1_______1_______01 lớn hơn_______1

Các toán tử so sánh này có thể được kết hợp với các toán tử số học và bitwise để thể hiện phạm vi kiểm tra gần như vô hạn cho các số. Ví dụ: chúng ta có thể kiểm tra xem một số có phải là số lẻ hay không bằng cách kiểm tra xem mô đun với 2 có trả về 1 không

Trong [11]

# True division
print[11 / 2]
0

Ra[11]

# True division
print[11 / 2]
1

Trong [12]

# True division
print[11 / 2]
2

Ra[12]

# True division
print[11 / 2]
3

Chúng ta có thể xâu chuỗi nhiều phép so sánh lại với nhau để kiểm tra các mối quan hệ phức tạp hơn

Trong [13]

# True division
print[11 / 2]
4

Ra[13]

# True division
print[11 / 2]
1

Và, chỉ để làm bạn đau đầu một chút, hãy xem sự so sánh này

Trong [14]

# True division
print[11 / 2]
6

Ra[14]

# True division
print[11 / 2]
1

Nhớ lại rằng

42.0
38 là toán tử lật bit và rõ ràng khi bạn lật tất cả các bit của số 0, bạn sẽ có -1. Nếu bạn tò mò về lý do tại sao lại như vậy, hãy tra cứu sơ đồ mã hóa số nguyên bổ sung của cả hai, đây là cách mà Python sử dụng để mã hóa các số nguyên có dấu và nghĩ xem điều gì sẽ xảy ra khi bạn bắt đầu lật tất cả các bit của số nguyên được mã hóa theo cách này

Hoạt động Boolean

Khi làm việc với các giá trị Boolean, Python cung cấp các toán tử để kết hợp các giá trị bằng cách sử dụng các khái niệm chuẩn về "và", "hoặc" và "không". Có thể đoán trước được, những toán tử này được thể hiện bằng các từ

42.0
39,
42.0
40 và
42.0
41

Trong [15]

# True division
print[11 / 2]
8

Ra[15]

# True division
print[11 / 2]
1

Trong [16]

5.5
0

Ra[16]

# True division
print[11 / 2]
1

Trong [17]

5.5
2

Ra[17]

# True division
print[11 / 2]
3

Những người hâm mộ đại số Boolean có thể nhận thấy rằng toán tử XOR không được bao gồm; . Mặt khác, một thủ thuật thông minh mà bạn có thể sử dụng để XOR các giá trị Boolean như sau

Trong [18]

5.5
4

Hết[18]

# True division
print[11 / 2]
3

Các loại phép toán Boolean này sẽ trở nên cực kỳ hữu ích khi chúng ta bắt đầu thảo luận về các câu lệnh luồng điều khiển như điều kiện và vòng lặp

Một điều đôi khi khó hiểu về ngôn ngữ này là khi nào sử dụng toán tử Boolean [

42.0
39,
42.0
40,
42.0
41] và khi nào sử dụng phép toán bitwise [
42.0
45,
42.0
46,
42.0
38]. Câu trả lời nằm trong tên của họ. Các toán tử Boolean nên được sử dụng khi bạn muốn tính toán các giá trị Boolean [i. e. , đúng hay sai] của toàn bộ câu lệnh. Các thao tác bitwise nên được sử dụng khi bạn muốn thao tác trên các bit riêng lẻ hoặc các thành phần của các đối tượng được đề cập

Toán tử nhận dạng và thành viên

Giống như

42.0
39,
42.0
40 và
42.0
41, Python cũng chứa các toán tử giống như văn xuôi để kiểm tra danh tính và tư cách thành viên. Họ là những người sau đây

Toán tửMô tả
42.0
51True nếu
5
0 và
5
1 là các đối tượng giống hệt nhau
42.0
54True nếu
5
0 và
5
1 không phải là đối tượng giống hệt nhau
42.0
57True nếu
5
0 là thành viên của
5
1
42.0
60True nếu
5
0 không phải là thành viên của
5
1

toán tử nhận dạng. "
42.0
63" và "
42.0
64"

Các toán tử nhận dạng, "

42.0
63" và "
42.0
64" kiểm tra nhận dạng đối tượng. Danh tính đối tượng khác với bình đẳng, như chúng ta có thể thấy ở đây

Trong 19]

5.5
6

Trong 20]

5.5
7

Hết[20]

# True division
print[11 / 2]
1

Trong [21]

5.5
9

Hết[21]

# True division
print[11 / 2]
3

Trong [22]

# Floor division
print[11 // 2]
1

Hết[22]

# True division
print[11 / 2]
1

Các đối tượng giống hệt nhau trông như thế nào?

Trong [23]

# Floor division
print[11 // 2]
3

Hết[23]

# True division
print[11 / 2]
1

Sự khác biệt giữa hai trường hợp ở đây là trong trường hợp đầu tiên,

5
0 và
5
1 chỉ vào các đối tượng khác nhau, trong khi ở trường hợp thứ hai, chúng chỉ vào cùng một đối tượng. Như chúng ta đã thấy trong phần trước, biến Python là con trỏ. Toán tử "_______26_______63" kiểm tra xem hai biến có đang trỏ đến cùng một vùng chứa [đối tượng] hay không, thay vì đề cập đến những gì vùng chứa chứa. Với suy nghĩ này, trong hầu hết các trường hợp, người mới bắt đầu muốn sử dụng "
42.0
63", ý nghĩa thực sự của chúng là
42.0
71

nhà khai thác thành viên

Toán tử thành viên kiểm tra tư cách thành viên trong các đối tượng phức hợp. Vì vậy, ví dụ, chúng ta có thể viết

Trong [24]

# Floor division
print[11 // 2]
5

Ra[24]

# True division
print[11 / 2]
1

Trong [25]

# Floor division
print[11 // 2]
7

Hết[25]

# True division
print[11 / 2]
3

Các hoạt động thành viên này là một ví dụ về những gì làm cho Python dễ sử dụng so với các ngôn ngữ cấp thấp hơn như C. Trong C, tư cách thành viên thường được xác định bằng cách xây dựng thủ công một vòng lặp trên danh sách và kiểm tra sự bằng nhau của từng giá trị. Trong Python, bạn chỉ cần nhập những gì bạn muốn biết, theo cách gợi nhớ đến văn xuôi tiếng Anh đơn giản

Toán tử bitwise là gì?

Toán tử theo bit là các ký tự đại diện cho các hành động [hoạt động theo bit] được thực hiện trên các bit đơn lẻ . Chúng hoạt động ở cấp độ nhị phân và thực hiện các thao tác trên các mẫu bit liên quan đến việc thao tác các bit riêng lẻ.

Ví dụ toán tử bitwise là gì?

Các loại Toán tử Bitwise trong C

Toán tử bitwise XOR trong Python là gì?

Trong Python, XOR là một toán tử bitwise còn được gọi là Exclusive OR . Nó là một toán tử logic cho kết quả 1 khi một trong hai toán hạng là 1 [một là 1 và một là 0], nhưng cả hai đều không phải là 1 và cả hai đều không phải là 0. Ký hiệu của XOR trong Python là '^' và trong toán học, ký hiệu của nó là '⊕'.

Python bitwise & hoạt động như thế nào?

Toán tử AND theo bit Trả về 1 nếu cả hai bit là 1 khác 0 . Bitwise hoặc toán tử Trả về 1 nếu một trong hai bit là 1 khác 0. Bitwise không toán tử. Trả về phần bù của một số. Toán tử bitwise xor. Trả về 1 nếu một trong các bit là 1 và bit kia là 0 khác trả về false.

Chủ Đề