Question 11 · 6 points
Bit-flag permissions
Implement update_permission without separate if statements for individual permissions.
#define CAN_READ (1u << 0)
#define CAN_WRITE (1u << 1)
#define CAN_EXECUTE (1u << 2)
#define IS_ADMIN (1u << 3)
typedef struct {
unsigned permissions;
} user_t;
void update_permission(
user_t *user,
unsigned mask,
int enabled
);
When enabled is non-zero, set every bit selected by mask. Otherwise, clear every selected bit. Bits not selected by mask must remain unchanged. Explain both bitwise expressions.