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.
Codecrown