Gibt es einen Namen für die Technik, Basis-2-Nummern zu verwenden, um eine Liste der eindeutigen Optionen zu codieren?

StackOverflow https://stackoverflow.com/questions/2950962

Frage

Entschuldigung für die ziemlich vage Natur dieser Frage, mir wurde nie offiziell Programmierung beigebracht und Google ist in diesem Fall für einen Selbsthilfe-Typ wie mich ziemlich nutzlos, da die Schlüsselwörter ziemlich mehrdeutig sind.

Ich schreibe ein paar Funktionen, die eine Liste von Optionen in eine lange Zeit codieren und dekodieren, damit sie leicht um die Anwendung weitergegeben werden können. Sie wissen so etwas:

1 - Apfel
2 - Orange
4 - Banane
8 - Pflaume
usw.

In diesem Fall würde die Nummer 11 Apple, Orange & Plum darstellen.

Ich habe es zum Laufen, aber ich sehe, dass dies die ganze Zeit verwendet wird. Nehmen wir also an, dass es einen gemeinsamen Namen für die Technik gibt, und zweifellos alle möglichen besten Praktiken und cleveren Algorithmen, die im Moment nur außerhalb meiner Reichweite liegen.

EDIT: Dank an alle wusste ich, dass die Antwort schnell kommen würde :)

War es hilfreich?

Lösung

Bitflaggen. Es ist eine Technik, die als Teil der Bitmaskierung verwendet wird.

0001 - Apfel
0010 - Oranage
0100 - Banane
1000 - Pflaume

Jeder 1 ist das markierte Bit.

Jetzt können Sie einfach mit dieser Nummer bitweise Vorgänge ausführen:

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

Andere Tipps

Bitflags

         

Gehen Sie an der Hilfe für die C# Flags Attribut Ich werde mit ein bisschen Feld oder Flaggenset gehen

Eine Art verwandte Hardware gibt es auch One-Hot-Codierung Dies impliziert jedoch, dass Sie keine Kombinationen von Flags erhalten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top