2010-07-18 14 views
7

In C e incorporato, si utilizzano frequentemente costanti enumerate in cui ogni valore è una maschera bit con esattamente 1 bit impostato. (ad esempio 0x0001, 0x0002, 0x0004, ecc.) Esiste un nome standard per questo tipo di maschera di bit? Li ho visti indicati come flag, ma più di passaggio che come definizione standard. So che sembra snob, ma le "bandiere" non sembrano abbastanza tecniche? Qualcun altro ha un buon nome per questi? Non riesco ad immaginare che nessuno ne abbia inventato uno.Nome per una maschera di bit con set 1 bit

+1

La bandiera mi sembra abbastanza ragionevole - "una potenza di due" in realtà non spiega molto, la bandiera è almeno migliore di questa. –

+0

@Will A - In realtà, questo è il mio punto principale. Se stai usando il potere di due, le tue "bandiere" sono completamente indipendenti. Puoi OR, AND e NOT loro e basta cambiare/controllare l'uno o due che ti interessa senza cambiare nessun altro. – ktrimbach

risposta

10

"Bandiere" è il termine accettato. "Passa giù una bandiera", "imposta questo flag", ecc.

+0

La voce di Wikipedia per Flags dice che: flag si riferisce a uno * o più * bit che vengono utilizzati per memorizzare un valore * o codice binario *. Questo è esattamente il motivo per cui voglio qualcosa di meno generico. – ktrimbach

+2

Non puoi sempre ottenere quello che vuoi. "Flag" è il termine standard per questa funzione. –

+0

@ktrimbach, la voce wikipedia per la parola flag indica che il nome implica fortemente una mappatura diretta di un singolo bit su un singolo flag. E non ho mai sentito il termine usato per indicare più bit. – MSN

2

Il framework .NET ha un attributo Flags che viene utilizzato per indicare esattamente il comportamento che si sta descrivendo.

Non si limitano a inventare nomi per quello che vogliono, quindi una bandiera è probabilmente il termine più accettabile.

+0

Questa è una buona referenza. .NET definisce un FlagAttribute per l'enumerazione e MSDN lo descrive come in questo modo. Non sono sicuro di ciò che fa bene oltre a consentire a ToString() di concatenare più enumerazioni insieme, ma è illustrativo. – ktrimbach

2

Ho anche visto "bit flag".

+0

Ho trovato un articolo del Dr Dobbs che menziona "Bit Flag Enumerations". Questo è un po '("scuse pun") più vicino a quello che sto pensando. http://www.drdobbs.com/184403893 – ktrimbach

5

"Flag" viene utilizzato per questi da decenni e va bene. Il mio vecchio C64 già aveva una bandiera a zero, portare la bandiera, ecc Vedi qui per ulteriori informazioni:

http://en.wikipedia.org/wiki/Flag_(computing%29

http://en.wikipedia.org/wiki/Status_register

non so esattamente quando questo termine è stato coniato e da chi.

+0

Il link Wikipedia parla specificamente di registri di stato e parole di bandiera. Si tratta di flag di bit hardware. Probabilmente è da dove viene, ma sto cercando qualcosa in più. – ktrimbach

+0

@ktrimbach: Il primo collegamento (ho modificato il mio post così ora funziona) dice anche: 'In altri casi, i valori binari possono rappresentare uno o più attributi in un campo bit, spesso correlati a capacità o permessi, come "può essere scritto su" o "può essere cancellato". ' – Secure

1

In matematica, un insieme singleton è un insieme con esattamente un elemento, quindi è possibile chiamarli singolarmente un bitset singleton o un bitmask singleton, ma in pratica non l'ho visto.

+0

Rispondendo alla domanda sbagliata? – Joshua

+0

@Joshua, non sono sicuro di cosa ti riferisci. – ergosys

+0

Il valore non ha un bit impostato, l'elenco dei valori combinati ha ciascuno un bit impostato. – Joshua

Problemi correlati