Set Specific Bits in a 32-bit Register

Code

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

uint32_t set_bits(uint32_t reg, uint8_t pos, uint8_t length) {
    // Create mask with 'length' ones
        uint32_t mask = (1U << length) - 1;
            // Shift mask to start position
                mask <<= pos;
                    // Set the bits
                        return reg | mask;
                        }

                        int main() {
                            uint32_t reg;
                                uint8_t pos, length;
                                    
                                        // Read input
                                            scanf("%u %hhu %hhu", &reg, &pos, &length);
                                                
                                                    // Compute result
                                                        uint32_t result = set_bits(reg, pos, length);
                                                            
                                                                // Output result
                                                                    printf("%u", result);
                                                                        
                                                                            return 0;
                                                                            }

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

0 4 3

Expected Output

112