Left and right shifts move bits to multiply or divide unsigned values by powers of two.

Shift Values

shift_values.c
#include <stdio.h>

int main(void) {
    unsigned int value = ;
    unsigned int doubled = value << 1;
    unsigned int halved = doubled >> 1;

    printf("doubled=%u halved=%u\n", doubled, halved);
    return 0;
}
#include <stdio.h>

int main(void) {
    unsigned int value = ;
    unsigned int doubled = value << 1;
    unsigned int halved = doubled >> 1;

    printf("doubled=%u halved=%u\n", doubled, halved);
    return 0;
}
#include <stdio.h>

int main(void) {
    unsigned int value = ;
    unsigned int doubled = value << 1;
    unsigned int halved = doubled >> 1;

    printf("doubled=%u halved=%u\n", doubled, halved);
    return 0;
}
left shift `value << n` moves bits left and multiplies by `2^n` for these small unsigned values.
right shift `value >> n` moves bits right and divides by `2^n` for these small unsigned values.