2009-06-21 11 views
8

Birden çok bayrak depolamak için bir bit haritası kullanmak üzere olduğumda her zaman kafam karışır. Örneğin, bir nesne için 10 olası özellik varsa (tüm Evet veya Hayır), ben imzasız bir int ve özelliklere dayalı ilk 10 bit (LSB) kullanın. Şimdi belirli bir bitin nasıl ayarlanacağı ve nasıl ayarlanacağı ve ayrıca bir bitin ayarlanıp ayarlanmadığı nasıl kontrol edilir? Ben 5 bit yoketmek istiyorsanızBirden çok değeri saklamak için bir bit haritası kullanma hakkında hızlı bir hile sayfası

, ben kullanın: bitand (bayrak, 2^5-1)

Ama 5 bit set olup olmadığını kontrol etmek için kullanmak ne olduğu hakkında net değilim.

bit ayarlanır inci n onay eğer

cevap

23

:

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

bit n'inci ayarlayın:

flags |= (1 << n) 

berrak n inci bit:

flags &= ~(1 << n) 

bit n'inci geçiş:

flags ^= (1 << n) 
+0

teşekkür ederiz, bu masama yapıştırın olacak, ihtiyacım olan şey :) – Arvind

İlgili konular