Bitwise và toán tử 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
5
21Floor divisionQuotient of
5
0 and
5
1, removing fractional parts
5
24ModulusInteger remainder after division of
5
0 by
5
1
5
27Exponentiation
5
0 raised to the power of
5
1
5
10NegationThe negative of
5
0
5
12Unary 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]

5
5

Ra[1]

5
6

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

Trong 2]

5
7

5
8

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ử

5
15, 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

Toán tử TênMô tả
5
18Bitwise ANDBits được xác định bằng cả
5
0 và
5
1____381Bitwise ORBits được xác định bằng
5
0 hoặc
5
1 hoặc cả hai
5
84Bitwise XORBits được xác định bằng
5
0 hoặc
5
1 nhưng không phải cả hai
5
87Bit shift left Dịch chuyển bit của
5
0 sang trái bởi
5
1 đơn vị
5
70Bit shift phảiShift bit của
5
0 sang phải bằng
5
1 đơn vị
5
73Bitwise negation của NOT10

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

5
75 tích hợp

Trong [4]

5
2

Ra[4]

5
1

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

5
76, 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]

5
8

Ra[5]

5
7

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]

5
60

Ra[6]

5
61

Trong [7]

5
62

Ra[7]

5
63

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. ,

5
84] khi chúng thực sự có nghĩa là lũy thừa [i. e. ,
5
27]

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ử "

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

Trong [8]

5
64

5
65

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]

5
66

Ra[9]

5
67

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]

5
68

5
69

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 đó;

5
603
5
604
5
605
5
606
5
607
5
608
5
609
5
610
5
611
5
612
5
613
5
614

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 "

5
615", biểu thức
5
616 tương đương với
5
617, 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

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

OperationDescriptionOperationDescription
5
620
5
0 bằng
5
1
5
623
5
0 không bằng
5
1
5
626
5
0 nhỏ hơn
5
1
5
629
5
0 lớn hơn
5
1
5
632
5
0 nhỏ hơn hoặc bằng
5
1
5
635
5
0 lớn hơn hoặc bằng
5
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]

5
70

Ra[11]

5
71

Trong [12]

5
72

Ra[12]

5
73

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]

5
74

Ra[13]

5
71

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

Trong [14]

5
76

Ra[14]

5
71

Nhớ lại rằng

5
638 là toán tử lật bit và rõ ràng khi bạn lật tất cả các bit bằng 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ể dự đoán, các toán tử này được biểu thị bằng các từ

5
639,
5
640 và
5
641

Trong [15]

5
78

Ra[15]

5
71

Trong [16]

5
80

Ra[16]

5
71

Trong [17]

5
82

Ra[17]

5
73

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
84

Hết[18]

5
73

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 [

5
639,
5
640,
5
641] và khi nào sử dụng phép toán bitwise [
5
645,
5
646,
5
638]. 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ư

5
639,
5
640 và
5
641, 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ả
5
651True nếu
5
0 và
5
1 là các đối tượng giống hệt nhau
5
654True nếu
5
0 và
5
1 không phải là đối tượng giống hệt nhau
5
657True nếu
5
0 là thành viên của
5
1
5
660True nếu
5
0 không phải là thành viên của
5
1

toán tử nhận dạng. "______2663" và "______2664"

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

5
663" và "______2664" kiểm tra danh tính đố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
86

Trong 20]

5
87

Hết[20]

5
71

Trong [21]

5
89

Hết[21]

5
73

Trong [22]

# Floor division
print[11 // 2]
1

Hết[22]

5
71

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]

5
71

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 trỏ đến các đối tượng khác nhau, trong khi ở trường hợp thứ hai, chúng trỏ đến 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ử "______2663" 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 "
5
663", ý nghĩa thực sự của chúng là
5
671

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]

5
71

Trong [25]

# Floor division
print[11 // 2]
7

Hết[25]

5
73

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ử của bitwise và là gì?

Toán tử AND theo bit [ & ] so sánh từng bit của toán hạng thứ nhất với bit tương ứng của toán hạng thứ hai . Nếu cả hai bit là 1, bit kết quả tương ứng được đặt thành 1. Mặt khác, bit kết quả tương ứng được đặt thành 0. Cả hai toán hạng cho toán tử AND theo bit phải có các kiểu tích phân.

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

Python và toán tử cho phép bạn xây dựng các biểu thức Boolean phức hợp mà bạn có thể sử dụng để quyết định tiến trình hành động của chương trình . Bạn có thể sử dụng toán tử and để giải quyết một số vấn đề cả trong ngữ cảnh Boolean hoặc không phải Boolean.

&& Có phải là toán tử Bitwise không?

Toán tử Bitwise And được biểu thị là '&' và toán tử logic được biểu thị là '&&' . Sau đây là một số khác biệt cơ bản giữa hai toán tử. a] Toán tử logic và toán tử '&&' mong đợi các toán hạng của nó là các biểu thức boolean [1 hoặc 0] và trả về một giá trị boolean.

Sự khác biệt giữa logic && và bitwise & là gì?

Toán tử logic AND hoạt động trên các biểu thức Boolean và chỉ trả về các giá trị Boolean. Toán tử bitwise AND hoạt động trên dữ liệu kiểu int integer, short int, long, unsigned int và cũng trả về kiểu dữ liệu đó

Chủ Đề