19. Extract a Bit Field from a 32-bit Register

Back To All Submissions
Previous Submission
Next Submission

Code

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

uint32_t extract(uint32_t reg, uint8_t pos, uint8_t len) {
	uint32_t result=0;
	for (uint8_t i = 0; i < len; i++) {
		uint32_t now = ((reg & (1UL << pos + i)) >> (pos));
		result |= now;
	}
	return result;
}

int main() {
	uint32_t reg;
	uint8_t pos, len;
	scanf("%u%hhu%hhu", &reg, &pos, &len);
	// Trích xuất cả cụm bit ra thành một số nguyên
	uint32_t result = (reg >> pos) & ((1ULL << len) - 1);

	// In ra con số duy nhất đó (Dạng Dec hoặc Hex hoặc gì tùy bạn)
	printf("%u", result);
	
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote