20. Clear Specific Bits in a 32-bit Register

Back To All Submissions
Previous Submission
Next Submission

Code

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

void clearbit(uint32_t *reg, uint8_t pos, uint8_t len) {
	uint32_t mask = ((1ULL << len) - 1) << pos;
	*reg &= ~mask;
}

int main() {
	uint32_t reg;
	uint8_t pos, len;
	scanf("%u %hhu %hhu", &reg, &pos, &len);
	clearbit(&reg, pos, len);
	printf("%u", reg);
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote