21. Replace Bit Field in a 32-bit Register

Back To All Submissions
Previous Submission
Next Submission

Code

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

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

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

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote