Bit Operations using Macros

Code

#include <stdio.h>
#include <stdint.h>

// Set bits 2 and 7
// Clear bit 3
// Toggle bit 5
// Your task is to implement a function that:

// Accepts a uint8_t reg as input
// Applies all the above operations in the given order
// Returns the updated register value
// Use proper bitwise macros for maintainability.

//Bitwise macros
#define SET_BIT(reg,n)    ((reg) |= (1u<<(n)))
#define CLEAR_BIT(reg,n)  ((reg) &= ~(1u<<(n)))
#define TOGGLE_BIT(reg,n) ((reg) ^= (1u<<(n))) 

uint8_t modify_register(uint8_t reg){
    SET_BIT(reg,2); 
    SET_BIT(reg,7); 
    CLEAR_BIT(reg,3); 
    TOGGLE_BIT(reg,5); 
    return reg; 
}

int main(){

    uint8_t reg; 
    scanf("%hhu", &reg);
    printf("%hhu", modify_register(reg)); 
    return 0; 
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

0

Expected Output

164