26. Extract and Modify Field in a 32-bit Register

Back To All Submissions
Previous Submission
Next Submission

Code

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

void update(uint32_t* reg) {
	uint32_t mask = ((1UL << 5) - 1);
	uint32_t val = ((*reg >> 10) & mask);
	val = (val < 31) ? (val + 1) : val;
	*reg &= ~(mask << 10);
	*reg |= (val << 10);
}

int main() {
	uint32_t reg;
	scanf("%u", &reg);
	update(&reg);
	printf("%u", reg);
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote