Toán tử nào sau đây là toán tử bitwise trong Python?

Nói chung, các toán tử Python thường được sử dụng để xử lý các giá trị và đối số. Hướng dẫn này sẽ khám phá một dạng cụ thể của toán tử Python được gọi là toán tử bitwise. Các ký hiệu này biểu thị các ký hiệu thông thường cho các thủ tục toán học và logic

Hoạt động theo bit là các quy trình tương tác với các bit riêng lẻ, là thành phần cơ bản của bất kỳ loại dữ liệu nào trong máy tính. Giá trị nhị phân 0 hoặc 1 được gán cho mỗi bit. Bất chấp khái niệm cho rằng máy có thể thao tác với các bit, máy thường lưu trữ dữ liệu và thực hiện các lệnh theo byte, là bội số của bit. Hầu hết các ngôn ngữ kịch bản hoạt động với các nhóm 8 bit, 16 bit hoặc 32 bit

Toán tử bitwise là các ký tự biểu thị các hoạt động được thực hiện trên các bit đơn lẻ. Hoạt động theo bit được thực thi bằng cách sắp xếp không gian các bit riêng biệt của các mẫu hai bit có cùng kích thước

Toán tử Bitwise trong Python

Các toán tử bitwise được sử dụng trong python để thực hiện các thao tác bitwise trên các số. Các giá trị đầu tiên được chuyển đổi thành nhị phân, sau đó các thao tác được thực hiện từng chút một, do đó có cụm từ "toán tử theo bit. " Kết quả sau đó được hiển thị dưới dạng số thập phân

Toán tử logic theo bit. Các toán tử này được sử dụng để thực thi các phép toán logic giống như các toán tử logic khác từng chút một. Điều này gần giống với việc sử dụng các toán tử logic như và, hoặc, và không ở cấp độ bit. Ngoại trừ những sự kiện cơ bản này, các toán tử logic và bit là tương tự nhau

Toán tử dịch chuyển theo bit. Các toán tử này nhân hoặc chia một số nguyên cho hai bằng cách dịch chuyển từng bit riêng lẻ sang trái hoặc phải. Chúng ta có thể sử dụng chúng khi muốn nhân hoặc chia một giá trị với lũy thừa 2. Toán tử bitwise Python chỉ hoạt động với số nguyên

Toán tử Mô tả & ANDT nhị phân Toán tử gửi bit có trong cả hai toán hạng đến đầu ra. Nhị phân ORTNếu một bit có mặt trong một trong hai toán hạng, nó sẽ được sao chép. ^ XORTI nhị phân được sao chép nếu bit được đặt bên trong một đối số chứ không phải cả hai. ~ Bổ sung nhị phânTIt có chức năng 'lật' bit và là đơn nguyên. > Dịch chuyển phải nhị phânSố lượng bit được cung cấp bởi tham số bên phải tăng vị trí của toán hạng bên trái

Mỗi toán tử bitwise nhị phân có một toán tử ghép thực hiện một ứng dụng nâng cao

OperatorSyntaxEquivalent to&=N1 &= N2N1 = N1 & N2|=N1 |= N2N1 = N1 | N2^=N1 ^= N2N1 = N1 ^ N2> n

Đây là các quy tắc để cập nhật đối số bên trái trong khi nó vẫn đang hoạt động

Ví dụ về toán tử Bitwise trong Python

Bitwise AND

Sự kết hợp logic được thực hiện bởi thao tác AND [&] theo bit trên các bit thích hợp của toán hạng được cung cấp

Mã số

đầu ra

Bitwise HOẶC

Sự phân tách logic đạt được bằng cách sử dụng phép toán OR theo bit [. ]. Nếu tối thiểu một trong các cặp bit thích hợp được bật, nó sẽ tạo ra một

Mã số

đầu ra

Bitwise KHÔNG

Bởi vì toán tử NOT theo chiều bit chỉ yêu cầu một tham số, nên đây là toán tử theo chiều bit đơn nguyên duy nhất. Nó lật tất cả các bit của một số được cung cấp để thực hiện phủ định logic đối với nó

Mã số

đầu ra

Bitwise XOR

Khi một trong các bit là 1, một bit khác là 0, nó trả về true;

Mã số

đầu ra

Dịch chuyển phải theo bit

Kết quả của thao tác này, các bit riêng lẻ của số được dịch chuyển sang phải và các khoảng trống ở bên trái được lấp đầy bằng 0 [hoặc 1 nếu số âm]. Kết quả tương tự như chia một giá trị cho lũy thừa 2

Mã số

đầu ra

Dịch chuyển trái theo bit

Kết quả của phép toán là các bit riêng lẻ của số nguyên bên trái được lấp đầy bằng 0 trên các khoảng trống bên phải. Kết quả tương tự như nhân một giá trị với lũy thừa 2

Chúng ta đã học về toán tử nhị phân, toán tử một ngôi, toán tử số học và chuỗi. Đây là cách chúng tôi thực hiện hầu hết các thao tác mà không phải lo lắng về logic ở cấp độ máy bên dưới. Sau đó, trong hướng dẫn này, chúng ta sẽ tìm hiểu về Toán tử bitwise Python và hiểu cách hoạt động có thể xảy ra chỉ với các số nhị phân. Do đó, chúng ta sẽ đi qua các chủ đề sau. -

  • Toán tử Bitwise trong Python là gì?
    • Tầm quan trọng của toán tử Bitwise
    • Toán tử Bitwise Python khác nhau
  • Thực hành cho toán tử Python Bitwise

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

Toán tử Bitwise được sử dụng để thực hiện các thao tác trên các mẫu nhị phân [1s và 0s]. Khi bạn thực hiện thao tác số nguyên 2 + 3 trên màn hình, máy tính sẽ đọc nó ở dạng nhị phân - 2 được biểu thị bằng 10 và 3 được biểu thị bằng 11 ở định dạng nhị phân. Do đó, tính toán của bạn sẽ giống như -

10 + 11 = 101

Lúc đầu, các toán tử bitwise có thể trông đáng sợ vì chúng chuyển đổi mọi thứ thành bit và chúng tôi không quen với 1 và 0. Tuy nhiên, một khi bạn đã hiểu chúng, chúng sẽ rất dễ thực hiện. Sau đó, hãy xem một ví dụ

3 x 2 = 6  Nếu bạn thực hiện thao tác tương tự ở định dạng nhị phân -

011 x 10 = 110

Nếu bạn để ý, khi chúng ta nhân một thứ gì đó với 2, chúng ta chỉ cần thực hiện một phép dịch trái. Do đó, 011 sẽ trở thành 110

Tương tự, 0010 sẽ trở thành 0100. Bây giờ bạn đã biết điều này, bạn có thể thấy việc nhân 2 dễ dàng như thế nào không? . Do đó, các toán tử thực hiện các thao tác này trên bit có thể được gọi là toán tử theo bit. Sau đó, chúng ta sẽ tìm hiểu chi tiết về các ca trái và phải này trong phần sau của hướng dẫn này

Trước khi tiếp tục, hãy tìm hiểu lý do tại sao toán tử bitwise lại cần thiết. Ngoài ra, chúng ta cũng sẽ hiểu tại sao chúng ta cần học chúng

Tầm quan trọng của toán tử Bitwise

Bây giờ bạn sẽ tự hỏi về sự cần thiết phải thực hiện các hoạt động bitwise. Hoạt động số học đã hoạt động khá tốt cho đến nay. Một số lý do sẽ thôi thúc bạn sử dụng toán tử bitwise là

  • Tốc độ thực hiện. Như chúng ta đã biết cho đến nay, máy tính [chính xác là trình biên dịch],  thay đổi mọi thứ thành 1 và 0. Vì vậy, tại sao không loại bỏ tải đó khỏi hệ thống? . Tuy nhiên, nếu bạn đang làm việc trên các chương trình Hệ thống Nhúng, điều này trở nên quan trọng
  • Thao tác bit. Rất nhiều lúc, bạn sẽ cần thao tác một số bit nhất định khi làm việc trên các hệ thống nhúng
    • Ví dụ dãy 111011 muốn biết bit nào có giá trị 0. Bạn có thể làm điều đó bằng cách sử dụng toán tử bitwise [chúng tôi sẽ đề cập đến điều đó sau về cách thực hiện điều đó]
  • kiểm tra lỗi. Toán tử bitwise được sử dụng rộng rãi trong kiểm tra lỗi. Nếu bạn đang gửi một số bit đến một máy tính khác trên một máy chủ khác, nó sẽ dễ xảy ra một số lỗi. Sau đó, bạn có thể xác định chúng bằng toán tử bitwise. Điều này rất quan trọng đối với các hệ thống nhúng và python là một trong những lựa chọn nổi bật cho điều đó

Đến bây giờ, bạn đã hiểu rõ tại sao chúng ta cần các toán tử bitwise. Sau đó, hãy tiếp tục với các loại toán tử bitwise

Toán tử Bitwise Python khác nhau

Python cung cấp một số toán tử hữu ích để thực hiện các thao tác theo bit. Sau đó, hãy hiểu những điều này một cách chi tiết

VÀ Toán tử Bitwise trong Python

Toán tử & [AND ] được sử dụng để thực hiện AND giữa hai bit. Ngoài ra, một quy tắc đơn giản cho AND là, nếu cả hai bit đang xét là 1, thì câu trả lời là 1 khác 0

1 & 1 = 1

1 & 0 = 0

0 & 0 = 0

0 & 1 = 0

Bây giờ trên cùng một dòng, bạn có thể thử 11 & 01 không?

Hơn nữa, chúng ta đã thảo luận trước đó, làm thế nào để tìm ra bit nào có giá trị 0. Điều này được thực hiện bằng thao tác AND

  • Nếu bạn VÀ một số có 11111111 [hiện tại đang xem xét 1 byte], nếu bit kết quả là 0, lỗi sẽ xảy ra tại vị trí đó

Trong phép tính sau đây, chúng tôi đang vận hành 100 và 101 bằng toán tử & bitwise trong Python. Bạn đã biết rằng để đại diện cho một số nhị phân, chúng tôi thêm tiền tố vào 0b

Do đó, bạn có thể viết trực tiếp câu lệnh sau trong trình chỉnh sửa [gốc hoặc đám mây] và chạy để lấy đầu ra. Nếu bạn cảm thấy thoải mái với IDE gốc thì bạn có thể tải xuống hoặc nếu không, bạn cũng có thể sử dụng trình chỉnh sửa dựa trên đám mây Repl. Sau đó, trong bài đăng này, chúng tôi sẽ sử dụng Rep. nó

Thực thi đoạn mã sau trong trình chỉnh sửa

in [0b100 & 0b101]

Ghi chú. 100 là 4 ở dạng nhị phân trong khi 101 là 5. Ngoài ra, tiền tố 0b biểu thị rằng chúng tôi đang đề cập đến các giá trị nhị phân chứ không phải số thập phân 100 và 101

Như mong đợi, chúng tôi nhận được kết quả là 4. Bạn phải lưu ý rằng mặc dù chúng tôi thực hiện phép tính ở dạng nhị phân, chúng tôi vẫn nhận được kết quả ở dạng thập phân. Ngoài ra, đây là hành vi mặc định trong ngôn ngữ lập trình. Ngoài ra, nếu không có từ khóa tham chiếu rõ ràng, kết quả sẽ ở dạng thập phân

Giống như chúng tôi đã gọi 0b để biểu thị số nhị phân trong đầu vào, để có được đầu ra nhị phân, chúng tôi cần đề cập đến từ khóa "bin "

Sau đó, thực hiện các thao tác sau để có kết quả tương tự ở dạng nhị phân

in[bin[0b100 & 0b101]]

Điều này sẽ mang lại kết quả sau

Thêm ví dụ

  • 12 & 14 = 1100 & 1110 = 1100 = 12
  • 23 & 15 = 10111 & 01111 = 00111 = 7
  • 10 & 12 = 1010 & 1100 = 1000 = 8

HOẶC Toán tử Bitwise trong Python

Các. Toán tử [OR ] được sử dụng để thực hiện phép toán OR trên hai bit. Hơn nữa, một quy tắc đơn giản cho OR là, bit kết quả là 0 khi và chỉ khi cả hai bit được xem xét là 0, nếu không thì kết quả là 1

1. 1 = 1

1. 0 = 1

0. 1 = 1

0. 0 = 0

Trong ví dụ dưới đây, chúng tôi đang vận hành số 5 [101] với 4 [100] và mong đợi câu trả lời là 101 [5] chỉ là bit ở giữa với 0

Như mong đợi, câu trả lời cho 5. 4 là 5

Thêm ví dụ

  • 12. 14 = 1100. 1110 = 1110 = 14
  • 23. 15 = 10111. 01111 = 11111 = 31
  • 10. 12 = 1010. 1100 = 1110 =  14

Không phải toán tử Python Bitwise

Toán tử ~ [NOT ] là một toán tử rất đơn giản và hoạt động đúng như tên gọi của nó. Ngoài ra, nó lật bit từ 0 thành 1 và từ 1 thành 0. Nhưng khi được sử dụng trong lập trình như Python, toán tử này được sử dụng để trả về phần bù của số

  • Do đó, ~10 = -11 chứ không phải 01. Hơn nữa, kiến ​​thức trước về phần bù 1 và phần bù 2 là cần thiết để hiểu vai trò của toán tử này ở đây
  • Để hiểu khái niệm này, bạn nên biết rằng python trả về phần bù 2 của số. Phần bù 2 của số là ~[num + 1]
  • Do đó ~10 được trả về là ~[10 + 1]. Đó là tất cả những điều bạn cần biết. Chỉ cần nhớ phím tắt ~[num + 1]

Thực thi đoạn mã sau trong trình chỉnh sửa để xác minh đầu ra không hoạt động của 24 [11000]

in [không phải [0b11000]]

Câu trả lời đến -25 như mong đợi

Thêm ví dụ

  • ~13  [0b01101] =  -14
  • ~16 [0b010000] =  -17
  • ~31 [0b011111] = -32

Toán tử Bitwise XOR Python

Toán tử ^ [XOR ] được sử dụng để XOR hai bit đang hoạt động. Thao tác XOR rất đơn giản. Nếu hai bit giống nhau thì bit kết quả là 0 khác 1

1^1 = 0

1^0 = 1

0^1 = 1

0^0 = 0

Vậy 1010^1011 sẽ ra 0001

Điều tương tự cũng được thể hiện bên dưới bằng cách thực hiện các dòng sau

in[0b1010 ^ 0b1011]

Toán tử XOR cực kỳ hữu ích trong lĩnh vực khoa học máy tính và hệ thống nhúng. Nó được sử dụng rất rộng rãi trong các tính toán logic để làm cho quá trình nhanh hơn. Ví dụ: như bạn đã thấy ở trên, 10 và 11 cho kết quả là 1 khi XOR được thực hiện trên chúng. Vì vậy muốn biết 2 số có liên tiếp hay không ta chỉ cần XOR chúng và kiểm tra xem kết quả có phải là 1 hay không

Thêm ví dụ

  • 12^14 = 1100^1110 = 0010 = 2
  • 23^15 = 10111^01111 = 11000 = 24
  • 10 ^ 12 = 1010 ^ 1100 = 0110 = 6

Shift trái trong Python

Toán tử 2 là 2

Thêm ví dụ

  • 14 >> 1 = 01110 >> 1 = 00111 = 7
  • 24 >> 4 = 000011000 >> 4 = 00001 = 1
  • 19 >> 3 = 00010011 >> 3 =  000010 = 2

Điều này đưa chúng ta đến phần cuối của việc học các toán tử bitwise trong Python hoặc bất kỳ ngôn ngữ lập trình nào cho vấn đề đó. Chìa khóa đối với toán tử bitwise là không biết định nghĩa của chúng nhưng để có thể triển khai chúng trong chương trình của bạn. Để sử dụng hiệu quả các toán tử theo bit, hãy thực hành nhiều bằng cách sử dụng các thao tác trên bit và khám phá cách chúng hoạt động trong các trường hợp khác nhau. Khi bạn nắm được các toán tử này, chúng là cách tốt nhất và nhanh nhất để giải quyết vấn đề

Luyện tập

Đối với thực hành của bạn, tôi đã đề cập đến một vài thao tác sử dụng các toán tử được thảo luận trong bài viết này. Các toán hạng này không được viết thành bit vì việc khám phá chúng sẽ giúp bạn nắm bắt được khái niệm này

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

Có 6 toán tử bitwise trong Python. . Toán tử Bitwise Python

Toán tử nào sau đây là toán tử bitwise?

Một nhóm toán tử được gọi là toán tử theo bit làm việc với các bit riêng lẻ trong một số. AND, OR, XOR, NOT, SHIFT và MASK là 6 toán tử theo bit.

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

Để thực hiện các hoạt động cấp độ bit trong lập trình C, các toán tử bitwise được sử dụng. . Toán tử Bitwise trong lập trình C

Chủ Đề