2009-07-03 3 views
1

Hier ist eine einfache Frage.Wie bezieht sich die Industrie auf das Speichern mehrerer boolescher Werte in einer ganzen Zahl?

Wie bezieht sich die Industrie auf das Speichern mehrerer boolescher Werte in einer ganzen Zahl?

Die SetWindowPos API ist ein Beispiel.

 
SWP_NOSIZE   DEFINE 1 
SWP_NOMOVE   DEFINE 2 
SWP_NOZORDER  DEFINE 4 
SWP_NOREDRAW  DEFINE 8 
SWP_NOACTIVATE  DEFINE 16 

Wenn die ganze Zahl 11 wird dann 1, 2 und 8 (SWP_NOSIZE, SWP_NOMOVE und SWP_NOREDRAW) sind.

Was ist das Schlagwort für dieses Muster?

Antwort

7

ich immer dieses „Bitflags“ genannt haben, da sie Fahnen sind, und es gibt eine Flagge pro Bit. Dies scheint ziemlich Standard, obwohl ich nicht wie Standard garantieren ...

+0

Dies ist meine bevorzugte für den allgemeinen Fall. "Bitfield" sollte nur verwendet werden, wenn die Bits in ein Maschinenwort passen (andernfalls haben Sie ein "Bit-Array"). – Nosredna

+0

Ich bevorzuge "Flags" auch – azheglov

+0

Felder ist besser, weil manchmal Sie Bits für 3-Zustand und 4-State-Daten (und größere Kombinationen) paaren. – jmucchiello

1

Ich ziehe "flags" auch. Dieser Begriff wird konsistent an vielen Stellen verwendet, an denen Potenzen von 2 ODER-verknüpft sind (um ein Beispiel zu geben, System.Reflection.BindingFlags in .NET, und es gibt viele andere).

Der Begriff "Bitfeld" hat eine spezifische Bedeutung, z. Bitfelder in C-Strukturen - aber im obigen Beispiel gibt es keine solche Struktur; Der Programmierer wählte stattdessen eine ganze Zahl.

Verwandte Themen