Trang chủHướng dẫnHiểu rõ Toán tử Bitwise trong Python chỉ trong 5 phút

Hiểu rõ Toán tử Bitwise trong Python chỉ trong 5 phút

CyStack blog 4 phút để đọc
CyStack blog27/08/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 4 minutes

Toán tử Bitwise trong Python được sử dụng để thực hiện các phép toán trên các bit của số nguyên. Các số nguyên được chuyển đổi sang định dạng nhị phân, sau đó các phép toán được thực hiện từng bit một, đó là lý do chúng được gọi là “bitwise”.

Toán tử Bitwise trong Python

Các toán tử này chỉ hoạt động trên các số nguyên và kết quả cuối cùng được trả về dưới định dạng số thập phân. Python bitwise operators còn được gọi là binary operators (toán tử nhị phân).

Các toán tử Bitwise trong Python

Có 6 toán tử bitwise trong Python. Bảng dưới đây cung cấp chi tiết ngắn gọn về chúng:

Toán tử Mô tả Ví dụ đơn giản
& Toán tử AND bit 10 & 7 = 2
` ` Toán tử OR bit
^ Toán tử XOR bit 10 ^ 7 = 13
~ Toán tử bổ sung 1 bit ~10 = -11
<< Toán tử dịch bit sang trái 10 << 2 = 40
>> Toán tử dịch bit sang phải 10 >> 1 = 5

1. Toán tử Bitwise AND (&)

Toán tử bitwise AND trong Python trả về 1 nếu cả hai bit ở cùng vị trí đều là 1, ngược lại thì trả về 0.

>>> 10&7
2
>>>

python bitwise and operator

2. Toán tử Bitwise OR (|)

Toán tử bitwise OR trong Python trả về 1 nếu một trong hai bit ở cùng vị trí là 1. Nếu cả hai bit đều là 0, nó sẽ trả về 0.

>>> 10|7
15
>>>

python bitwise or operator

3. Toán tử Bitwise XOR (^)

Toán tử bitwise XOR trong Python trả về 1 nếu một trong hai bit là 0 và bit còn lại là 1. Nếu cả hai bit đều là 0 hoặc 1 (tức là chúng giống nhau), nó sẽ trả về 0.

>>> 10^7
13
>>>

python bitwise xor operator

4. Toán tử Bitwise Ones’ Complement (~)

Toán tử Ones’ complement của một số ‘A’ trong Python sẽ tương đương với -(A+1).

>>> ~10
-11
>>> ~-10
9
>>>

python bitwise ones complement operator

5. Toán tử Bitwise Left Shift (<<)

Toán tử bitwise left shift trong Python dịch chuyển các bit của toán hạng bên trái sang phía bên trái một số lần bằng với giá trị của toán hạng bên phải. Nói một cách đơn giản, các số 0 sẽ được thêm vào cuối số nhị phân

>>> 10 << 2
40
>>>

python bitwise left shift operator

6. Toán tử Bitwise Right Shift (>>)

Toán tử bitwise right shift trong Python hoàn toàn ngược lại với toán tử left shift. Các bit của toán hạng bên trái sẽ được dịch chuyển sang phía bên phải một số lần bằng với giá trị của toán hạng bên phải. Nói một cách đơn giản, các bit ở phía bên phải sẽ bị loại bỏ.

>>> 10 >> 2
2
>>>

python bitwise right shift operator

Nạp chồng toán tử Bitwise trong Python

Python hỗ trợ nạp chồng toán tử. Có nhiều phương thức mà chúng ta có thể triển khai để hỗ trợ các toán tử bitwise cho các custom objects của mình.

Toán tử Bitwise Phương thức để triển khai
& and(self, other)
` `
^ xor(self, other)
~ invert(self)
<< lshift(self, other)
>> rshift(self, other)

Ví dụ về nạp chồng toán tử bitwise cho một custom object:

class Data:
    id = 0

    def __init__(self, i):
        self.id = i

    def __and__(self, other):
        print('Bitwise AND operator overloaded')
        if isinstance(other, Data):
            return Data(self.id & other.id)
        else:
            raise ValueError('Argument must be object of Data')

    def __or__(self, other):
        print('Bitwise OR operator overloaded')
        if isinstance(other, Data):
            return Data(self.id | other.id)
        else:
            raise ValueError('Argument must be object of Data')

    def __xor__(self, other):
        print('Bitwise XOR operator overloaded')
        if isinstance(other, Data):
            return Data(self.id ^ other.id)
        else:
            raise ValueError('Argument must be object of Data')

    def __lshift__(self, other):
        print('Bitwise Left Shift operator overloaded')
        if isinstance(other, int):
            return Data(self.id << other)
        else:
            raise ValueError('Argument must be integer')

    def __rshift__(self, other):
        print('Bitwise Right Shift operator overloaded')
        if isinstance(other, int):
            return Data(self.id >> other)
        else:
            raise ValueError('Argument must be integer')

    def __invert__(self):
        print('Bitwise Ones Complement operator overloaded')
        return Data(~self.id)

    def __str__(self):
        return f'Data[{self.id}]'

d1 = Data(10)
d2 = Data(7)

print(f'd1&d2 = {d1&d2}')
print(f'd1|d2 = {d1|d2}')
print(f'd1^d2 = {d1^d2}')
print(f'd1<<2 = {d1<<2}')
print(f'd1>>2 = {d1>>2}')
print(f'~d1 = {~d1}')

Kết quả

Bitwise AND operator overloaded
d1&d2 = Data[2]
Bitwise OR operator overloaded
d1|d2 = Data[15]
Bitwise XOR operator overloaded
d1^d2 = Data[13]
Bitwise Left Shift operator overloaded
d1<<2 = Data[40]
Bitwise Right Shift operator overloaded
d1>>2 = Data[2]
Bitwise Ones Complement operator overloaded
~d1 = Data[-11]

Nếu bạn chưa quen với định dạng chuỗi mới, vui lòng đọc thêm về f-strings trong Python.

Tổng kết

Toán tử bitwise trong Python chủ yếu được sử dụng trong các phép tính toán học. Chúng ta cũng có thể triển khai các phương thức cụ thể để hỗ trợ các toán tử bitwise cho các lớp tùy chỉnh của mình.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất