2009-06-21 29 views
8

Tôi luôn bị lẫn lộn khi tôi sắp sử dụng bản đồ bit để lưu trữ nhiều cờ. Ví dụ, nếu có 10 thuộc tính có thể cho một đối tượng (tất cả có hoặc không), tôi sử dụng một unsigned int và 10 bit đầu tiên (từ LSB) dựa trên các thuộc tính. Bây giờ làm thế nào để thiết lập và unset một bit cụ thể và cũng làm thế nào để kiểm tra xem một chút được thiết lập hay không?Một bản tóm tắt nhanh về việc sử dụng một bản đồ bit để lưu trữ nhiều giá trị

Nếu tôi muốn bỏ đặt bit thứ 5, tôi sử dụng: bitand (lá cờ, 2^5-1)

Nhưng tôi không rõ ràng về những gì để sử dụng để kiểm tra xem chút 5th được thiết lập hay không.

Trả lời

23

kiểm tra nếu n th bit được thiết lập:

(flags & (1 << n)) != 0 

thiết lập n thứ bit:

flags |= (1 << n) 

rõ ràng n thbit:

flags &= ~(1 << n) 

chuyển đổi n th bit:

flags ^= (1 << n) 
+0

Cảm ơn, đây là những gì tôi cần, sẽ dán lên bàn của tôi :) – Arvind

Các vấn đề liên quan