#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(®, bitmask_bit_2);
SET_BIT(®, bitmask_bit_7);
CLEAR_BIT(®, bitmask_bit_3);
TOGGLE_BIT(®, bitmask_bit_5);
return reg;
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
printf("%u", modify_register(reg));
return 0;
}
Input
0
Expected Output
164