All submissions

Bit Operations using Macros

Code

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

// Define bitwise macros here
constexpr uint8_t bit_pos_2 {2};
constexpr uint8_t bit_pos_3 {3};
constexpr uint8_t bit_pos_5 {5};
constexpr uint8_t bit_pos_7 {7};

constexpr uint8_t bitmask_bit_2 = (1 << bit_pos_2);
constexpr uint8_t bitmask_bit_3 = (1 << bit_pos_3);
constexpr uint8_t bitmask_bit_5 = (1 << bit_pos_5);
constexpr uint8_t bitmask_bit_7 = (1 << bit_pos_7);

inline void SET_BIT(uint8_t *reg, uint8_t bitmask){
    *reg |= bitmask;
}

inline void CLEAR_BIT(uint8_t *reg, uint8_t bitmask){
    *reg &= ~bitmask;
}

inline void TOGGLE_BIT(uint8_t *reg, uint8_t bitmask){
    *reg ^= (bitmask);
}

uint8_t modify_register(uint8_t reg) {
    // Apply operations in order
    SET_BIT(&reg, bitmask_bit_2);
    SET_BIT(&reg, bitmask_bit_7);

    CLEAR_BIT(&reg, bitmask_bit_3);

    TOGGLE_BIT(&reg, bitmask_bit_5);
    
    return reg;
}

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

Solving Approach

 

 

 

Loading...

Input

0

Expected Output

164