All submissions

Set Multiple Bits in 8-bit Register

Code

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

uint8_t setBits(uint8_t reg, int start, int end) {
    // Make sure positions are valid
    if (start < 0) start = 0;
    if (end > 7) end = 7;

    // Create mask
    uint8_t mask = ((1 << (end - start + 1)) - 1) << start;

    // Set the bits
    return reg | mask;
}

int main() {
    uint8_t reg;
    int start, end;

   // printf("Enter register value (0-255): ");
    scanf("%hhu", &reg); // Read 8-bit unsigned value

   // printf("Enter start position (0-7): ");
    scanf("%d", &start);

   // printf("Enter end position (0-7): ");
    scanf("%d", &end);

    uint8_t result = setBits(reg, start, end);

    printf("%u\n", result);

    return 0;
}

Solving Approach

 

 

 

Loading...

Input

0 1 3

Expected Output

14