2009-06-21 9 views
8

Zawsze jestem zdezorientowany, kiedy zamierzam użyć mapy bitowej do przechowywania wielu flag. Na przykład, jeśli istnieje 10 możliwych właściwości obiektu (wszystkie Tak lub Nie), używam unsigned int i pierwszych 10 bitów (z LSB) na podstawie właściwości. Teraz, jak ustawić i wyłączyć bit, a także jak sprawdzić, czy bit jest ustawiony, czy nie?Szybki cheatsheet o korzystaniu z mapy bitowej do przechowywania wielu wartości

Jeśli chcę rozbroić 5th trochę używam: bitand (flaga, 2^5 - 1)

Ale nie jestem jasne, na co należy użyć, aby sprawdzić, czy 5-cia bit jest ustawiony, czy nie.

Odpowiedz

23

Sprawdź, czy n th bit jest ustawiony:

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

ustawić n th bitowe:

flags |= (1 << n) 

jasne n th bit:

flags &= ~(1 << n) 

przełącz n th bitowe:

flags ^= (1 << n) 
+0

dzięki, to jest to, co potrzebne, będzie wkleić go na moim biurku :) – Arvind

Powiązane problemy