#include <stdio.h>
#include <stdint.h>
uint8_t clear_bit(uint8_t reg, uint8_t pos) {
// Your code here
return reg & ~(1<<pos);
}
int main() {
uint8_t reg, pos;
scanf("%hhu %hhu", ®, &pos);
uint8_t result = clear_bit(reg, pos);
printf("%u", result);
return 0;
}
1️⃣ Create mask for target bit
1 << pos
This produces a number where only that bit is 1.
Example (pos = 3):
00001000
2️⃣ Invert the mask
~(1 << pos)
Now it becomes:
11110111
Notice:
3️⃣ Use AND to clear the bit
reg & ~(1 << pos)
Why AND?
x & 0 = 0 → clears that bitx & 1 = x → keeps other bits unchangedreturn reg & ~(1 << pos);
✔ Clears only the specified bit
✔ Other bits remain unchanged
✔ Constant time
✔ Embedded-safe
✔ Interview-ready