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 Show
Các phép tính toán họcPython 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 50 and 51 52SubtractionDifference of 50 and 51 55MultiplicationProduct of 50 and 51 58True divisionQuotient of 50 and 51 bin(10)1Floor divisionQuotient of 50 and 51, removing fractional parts bin(10)4ModulusInteger remainder after division of 50 by 51 bin(10)7Exponentiation 50 raised to the power of 51 '0b1010'0NegationThe negative of 50 '0b1010'2Unary plus 50 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 50 và 51, để sử dụng trong các gói đại số tuyến tính khác nhau Hoạt động theo bitNgoà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 50 and 51 bin(4)1Bitwise ORBits defined in 50 or 51 or both bin(4)4Bitwise XORBits defined in 50 or 51 but not both bin(4)7Bit shift leftShift bits of 50 left by 51 units '0b100'0Bit shift rightShift bits of 50 right by 51 units '0b100'3Bitwise NOTBitwise negation of 50 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.00 Ra[6] 42.01 Trong [7] 42.02 Ra[7] 42.03 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ượngChú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.04 42.05 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 50, chúng ta viết Trong [9] 42.06 Ra[9] 42.07 Chúng tôi có thể muốn cập nhật biến 50 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.08 42.09 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.003_______26_______04 42.005 42.006 42.007 42.008 42.009 42.010 42.011 42.012 42.013 42.014 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.015", biểu thức 42.016 tương đương với 42.017, 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ánhMộ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.018 và 42.019. Các hoạt động so sánh được liệt kê trong bảng sauHoạt động Mô tả Hoạt động Mô tả_______26_______20 50 bằng với 51 42.023 50 không bằng với 51 42.026 50 nhỏ hơn hoặc bằng với 51 42.029 50 lớn hơn 51 42.032 50 nhỏ hơn hoặc bằng với 51_______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.038 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 BooleanKhi 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.039, 42.040 và 42.041 Trong [15] # True division print(11 / 2)8 Ra[15] # True division print(11 / 2)1 Trong [16] 5.50 Ra[16] # True division print(11 / 2)1 Trong [17] 5.52 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.54 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.039, 42.040, 42.041) và khi nào sử dụng phép toán bitwise ( 42.045, 42.046, 42.038). 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ênGiống như 42.039, 42.040 và 42.041, 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 đâyToán tửMô tả 42.051True nếu 50 và 51 là các đối tượng giống hệt nhau 42.054True nếu 50 và 51 không phải là đối tượng giống hệt nhau 42.057True nếu 50 là thành viên của 51 42.060True nếu 50 không phải là thành viên của 51 toán tử nhận dạng. "42.063" và "42.064"Các toán tử nhận dạng, " 42.063" và " 42.064" 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.56 Trong 20] 5.57 Hết[20] # True division print(11 / 2)1 Trong [21] 5.59 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, 50 và 51 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.063", ý nghĩa thực sự của chúng là 42.071 nhà khai thác thành viênToá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. |