#include <stdio.h>
#include <stdint.h>
uint8_t set_bit(uint8_t reg, uint8_t pos) {
// Your code here
reg |= (1<<pos);
return reg;
}
int main() {
uint8_t reg, pos;
scanf("%hhu %hhu", ®, &pos); // Accept register value and position
uint8_t result = set_bit(reg, pos);
printf("%u", result); // Output the result as an integer
return 0;
}
Solving Approach I performed OR operation with the register value by left shifting 1 by position value. So if the position if 5 and the reg = 10001111, 1<<5 means 00100000. now, reg | (1<<5) = 10001111 | 00100000 = 10101111 Hence bit is set!