Bài 15.2 - Thao tác bit unset với Python
Free
Khóa học Python từ Cơ bản đến Nâng cao
Chương 1: Làm quen với Python + Ôn tập I/O, biến, kiểu dữ liệu
Chương 2: Câu lệnh rẽ nhánh, vòng lặp, hàm
Chương 3: Xử lý chuỗi và danh sách nâng cao
Chương 4: Bài kiểm tra Python cơ bản + sửa bài
Chương 5: Duyệt mảng, tìm max/min, đếm
Chương 6: Thuật toán sắp xếp
Chương 7: Prefix Sum + Two Pointers
Chương 8: Backtracking cơ bản
Chương 9: Ôn tập thuật toán cơ bản + kiểm tra
Chương 10: Dynamic Programming cơ bản
Chương 11: Đệ quy và DP nâng cao
Chương 12: Đồ thị cơ bản – DFS, BFS
Chương 13: Đồ thị nâng cao – Dijkstra + Topo sort
Chương 14: Cây – Tree traversal + LCA
Chương 15: Bitmask – Kỹ thuật đại số
Chương 16: Số học + Modular Arithmetic
Chương 17: Class
Chương 18: File và Exception

Bài 15.2 - Thao tác bit unset với Python
Trong lập trình, đôi khi bạn muốn tắt (unset) một bit cụ thể trong một số nguyên. Hôm nay, chúng ta sẽ tìm hiểu cách thực hiện điều này một cách đơn giản mà hiệu quả trong Python! 💡
1. Cách unset một bit cụ thể
Công thức:
x & ~(1 << k)
Trong đó:
x
là số nguyên ban đầu.k
là vị trí bit muốn tắt (đếm từ 0, từ phải qua trái).1 << k
tạo ra một số có bit thứk
là1
, các bit còn lại là0
.~(1 << k)
đảo bit: chỉ bit thứk
là0
, các bit còn lại là1
.- Dùng phép
&
để giữ nguyên các bit khác, chỉ tắt bitk
.
2. Ví dụ 1: Tắt bit thứ 1 của số 7
x = 7 # 0111
k = 1
result = x & ~(1 << k)
print(result) # Kết quả: 5 (0101)
Giải thích:
1 << 1 = 0010
~(1 << 1) = 1101
0111 & 1101 = 0101
→ bằng5
3. Ví dụ 2: Tắt bit thứ 2 của số 13
x = 13 # 1101
k = 2
result = x & ~(1 << k)
print(result) # Kết quả: 9 (1001)
Giải thích:
1 << 2 = 0100
~(1 << 2) = 1011
1101 & 1011 = 1001
→ bằng9
4. Ví dụ 3: Không ảnh hưởng nếu bit đã là 0
x = 8 # 1000
k = 1
result = x & ~(1 << k)
print(result) # Kết quả: 8 (1000)
Giải thích:
- Bit thứ 1 vốn đã là 0 → không thay đổi kết quả.
5. Đóng gói thành hàm Python
def unset_bit(x, k):
return x & ~(1 << k)
print(unset_bit(7, 1)) # 5
print(unset_bit(13, 2)) # 9
print(unset_bit(8, 1)) # 8
Giải thích:
- Hàm
unset_bit
đơn giản và có thể tái sử dụng nhiều lần.
Kết luận
Việc thao tác với bit unset giúp bạn viết các thuật toán hiệu quả hơn, đặc biệt trong các bài toán cần xử lý bitmask, lập lịch, tối ưu không gian. Hãy luyện tập để làm chủ thao tác này nhé!
💡 Bitmask là một công cụ mạnh mẽ, và việc unset bit là kỹ năng không thể thiếu.
#HappyCoding cùng FullhouseDev! 🚀
Khóa học liên quan

3300000
4500000
Học Ngay
Comments