¿Qué hace el bit a bit o | operador hacer?

staba leyendo acerca de las enumeraciones de bandera y los operadores bit a bit, y encontré este código:

enum file{
read = 1,
write = 2,
readandwrite = read | write
}

Leí en alguna parte acerca de por qué hay una declaración inclusiva y cómo no puede haber un &, pero no puedo encontrar el artículo. ¿Alguien puede refrescar mi memoria y explicar el razonamiento?

Además, ¿cómo puedo decir y / o? P.ej. si dropdown1 = "hola" y / o dropdown2 = "hola" ....

Gracia

Respuestas a la pregunta(4)

Su respuesta a la pregunta