Adding & Removing Permissions - Bitwise Operations

Grant: flags |= PERMISSION

Revoke: flags &= ~PERMISSION

Interactive permission manager example.

1. Permission Definitions

C
Permission flags
#define READ_PERMISSION   0x01
#define WRITE_PERMISSION  0x02
#define EXEC_PERMISSION   0x04
#define DELETE_PERMISSION 0x08
#define ADMIN_PERMISSION  0x10

int user_permissions = 0;  // Start with no permissions

2. Core Functions

C
Add/Remove permission functions
// ADD (Grant) permission
int addPermission(int flags, int perm) {
    return flags | perm;
}

// REMOVE (Revoke) permission
int removePermission(int flags, int perm) {
    return flags & ~perm;
}

// TEST permission
int hasPermission(int flags, int perm) {
    return (flags & perm) != 0;
}

3. Complete Interactive Manager

C
Full permission management system
#include <stdio.h>

#define READ  0x01
#define WRITE 0x02
#define EXEC  0x04
#define DEL   0x08
#define ADMIN 0x10

int user_perms = 0;

int addPermission(int flags, int perm) {
    return flags | perm;
}

int removePermission(int flags, int perm) {
    return flags & ~perm;
}

int hasPermission(int flags, int perm) {
    return (flags & perm) != 0;
}

void printPermissions(int perms) {
    printf("Permissions: ");
    if (hasPermission(perms, READ))  printf("READ ");
    if (hasPermission(perms, WRITE)) printf("WRITE ");
    if (hasPermission(perms, EXEC))  printf("EXEC ");
    if (hasPermission(perms, DEL))   printf("DELETE ");
    if (hasPermission(perms, ADMIN)) printf("ADMIN");
    printf("(0x%02X)\n", perms);
}

int main() {
    int choice, perm;
    
    printf("=== Permission Manager ===\n");
    
    while (1) {
        printPermissions(user_perms);
        printf("1=Add 2=Remove 0=Exit: ");
        scanf("%d", &choice);
        
        if (choice == 0) break;
        
        printf("Permission (1=READ,2=WRITE,4=EXEC,8=DEL,16=ADMIN): ");
        scanf("%d", &perm);
        
        if (choice == 1)
            user_perms = addPermission(user_perms, perm);
        else
            user_perms = removePermission(user_perms, perm);
    }
    
    return 0;
}

4. Sample Run

TEXT
Interactive session
Permissions: (0x00)
1=Add 2=Remove 0=Exit: 1
Permission: 1
Permissions: READ (0x01)
1=Add 2=Remove 0=Exit: 1
Permission: 2
Permissions: READ WRITE (0x03)
1=Add 2=Remove 0=Exit: 2
Permission: 1
Permissions: WRITE (0x02)

5. Quick Reference

TEXT
Bitwise operations summary
ADD:    flags = flags | PERMISSION
REMOVE: flags = flags & ~PERMISSION
TEST:   if (flags & PERMISSION)
TOGGLE: flags = flags ^ PERMISSION

Conclusion

Mastered permission management! Interactive system ready to use.

Copy, compile, run - perfect for learning bitwise operations.