basics · intermediate · ~15 min
Circularly shift bits toward the MSB.
Implement:
uint32_t rotl32(uint32_t x, int n);
Rotate x left by n positions (bits that fall off the top re-enter at the bottom). n>=0; rotation is mod 32.
A 32-bit value and a shift n.
The rotated value.
n is reduced mod 32.
#include <stdint.h>
/* Rotate x left by n positions (n>=0; rotation is mod 32). */
uint32_t rotl32(uint32_t x,int n){ (void)n; return x; }
x >> (32-n) is undefined when n==0 (a 32-bit shift). Special-case n%32==0.
n==0 (or a multiple of 32) returns x unchanged.
Solve this exercise in the browser editor — compile and run against the test harness, no setup required.