All submissions

Extract and Modify Field in a 32-bit Register

Code

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

uint32_t update_register(uint32_t reg) {
    // Your logic here
    uint32_t mask = 0x7C00;
    uint32_t field = (reg & mask)>>10;
    if(field<31)
        field++;
    reg &= ~mask;
    reg |= (field << 10);
    return reg;
}

int main() {
    uint32_t reg;
    scanf("%u", &reg);
    uint32_t updated = update_register(reg);
    printf("%u", updated);
    return 0;
}

Solving Approach

  1. create mask for the target field

  2. extract the target field
  3. modify the field (apply the required logic)
  4. update the register

 

 

Loading...

Input

15360

Expected Output

16384