2010-07-18 17 views
7

En C e incrustado, con frecuencia se usan constantes enumeradas en las que cada valor es una máscara de bits con exactamente un conjunto de 1 bit. (por ejemplo, 0x0001, 0x0002, 0x0004, etc.) ¿Hay un nombre estándar para este tipo de máscara de bits? Los he visto como banderas, pero más de paso que como una definición estándar. Sé que suena esnob, ¿pero las "banderas" en realidad no parecen lo suficientemente técnicas? ¿Alguien más tiene un buen nombre para esto? No me puedo imaginar que nadie haya tenido una.Nombre para una máscara de bits con el conjunto de 1 bit

+1

La bandera me parece lo suficientemente razonable: "un poder de dos" realmente no explica mucho, la bandera es al menos mejor que esto. –

+0

@Will A - En realidad, ese es mi punto principal. Si usas poderes de dos, tus "banderas" son completamente independientes. Puede O, Y NO, y simplemente cambiar/verificar la o las dos que le interesan sin cambiar ninguna otra. – ktrimbach

Respuesta

10

"Banderas" es el término aceptado. "Pasar una bandera", "establecer esta bandera", etc.

+0

La entrada de Wikipedia para Flags dice esto: indicador se refiere a uno * o más * bits que se utilizan para almacenar un valor binario * o código *. Es exactamente por eso que quiero algo menos genérico. – ktrimbach

+2

No siempre puedes obtener lo que quieres. "Bandera" es el término estándar para esta característica. –

+0

@ktrimbach, la entrada de wikipedia para la palabra bandera indica que el nombre implica una asignación directa de un solo bit a una sola bandera. Y nunca escuché el término usado para indicar múltiples bits. – MSN

2

.NET Framework tiene un atributo Flags que se utiliza para indicar exactamente el comportamiento que está describiendo.

No se limitan a crear nombres para lo que quieran, por lo que una bandera es probablemente el término más aceptable.

+0

Esta es una buena referencia. .NET define un FlagAttribute para las enumeraciones y MSDN lo describe así. No estoy seguro de lo bueno que es, aparte de permitir que ToString() concatete varias enumeraciones, pero es ilustrativo. – ktrimbach

2

También he visto "indicadores de bits".

+0

Encontré un artículo del Dr. Dobbs que menciona "Enumeraciones de marcas de bits". Eso es un poco ('scuse pun) más cercano a lo que estoy pensando. http://www.drdobbs.com/184403893 – ktrimbach

5

"Bandera" se utiliza para esto desde hace décadas y está bien. Mi viejo C64 ya tenía una bandera de cero, lleve la bandera, etc. Consulte aquí para más información:

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

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

no sé exactamente cuando este término fue acuñado y por quién.

+0

El enlace de Wikipedia habla específicamente de registros de estado y palabras de marca. Estos son indicadores de bits de hardware. Probablemente sea de donde vino, pero estoy buscando algo más. – ktrimbach

+0

@ktrimbach: El primer enlace (he editado mi publicación para que ahora funcione) también dice: 'En otros casos, los valores binarios pueden representar uno o más atributos en un campo de bit, a menudo relacionados con habilidades o permisos, como "se puede escribir en" o "se puede eliminar". – Secure

1

En matemáticas, un conjunto único es un conjunto con exactamente un elemento, por lo que podría llamarse un conjunto de bits simple o una máscara de bits simple, pero no he visto esto en la práctica.

+0

Respondiendo la pregunta incorrecta? – Joshua

+0

@Joshua, no estoy seguro de a qué se refiere. – ergosys

+0

El valor no tiene un bit establecido, la lista de valores combinados tiene un bit cada uno. – Joshua

Cuestiones relacionadas