2010-06-01 16 views
5

Bu sorunun oldukça belirsiz doğasından ötürü özür dilerim, hiçbir zaman resmi olarak programlama öğretilmemiştim ve Google, benim gibi kendi kendine yardım eden bir adam için işe yaramaz çünkü anahtar kelimeler oldukça belirsiz. Apple
-Benzersiz seçeneklerin bir listesini kodlamak için base-2 numaralarını kullanma tekniği için bir ad var mı?

1:

ben onlar kolayca uygulamaya etrafında geçirilebilir böylece kodlamak ve Uzun içine seçenekler listesi deşifre fonksiyonların birkaç yazıyorum, sen bu tür şeyleri biliyorum 2 - Turuncu
4 - Muz
8 - vs.

Erik
sayı 11 Elma, Portakal & Erik temsil edecek Bu durumda.

o çalışma var ettik ama bu her zaman bu kadar tekniği için ortak isim var olduğunu varsayalım kullanılan bkz ve hiç şüphesiz sadece dışarı an vardır en iyi uygulama ve zeki algoritmalar her türlü ulaşmam

Düzenleme: tüm sayesinde, cevap hızla gelirdi :)

cevap

12

Bit Flags biliyorlardı. Bitmasking'in bir parçası olarak kullanılan bir teknik. - Elma
0010 - oranage
0100 - Muz
1000 -

Her 1 Plum
bayraklı biraz.

Şimdi kolaylıkla bu numarayı kullanarak bitsel işlemleri gerçekleştirebilirsiniz:

if((11 & Apple) == Apple) // The Apple Flag is set 
{ 
    // Do Something 
} 
+0

@Martin - Evet ... Yorumu görmeden önce değiştirdim. İyi yakalama olsa da. –

+0

bit kenarındaki parensleri kullanın ve –

+0

Burada önceliği yanlış anlamış mıydınız? (9 & Orange == Orange), false olması gereken TRUE değerini değerlendirir. Bu, FALSE –

2

bitflags

         

1

, donanım bu ima olsa bayrakları kombinasyonlarını alamadım one-hot encoding da var