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 đó:
xlà số nguyên ban đầu.klà vị trí bit muốn tắt (đếm từ 0, từ phải qua trái).1 << ktạo ra một số có bit thứklà1, các bit còn lại là0.~(1 << k)đảo bit: chỉ bit thứklà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) = 11010111 & 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) = 10111101 & 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
Giảm giá!
3300000
4500000
Học Ngay
Comments