Hacker News new | ask | show | jobs
by benlivengood 1672 days ago
You'll have to shift the values around anyway, so:

int intermediate = byte_or_word << N; // N chosen to put the five bits in the highest positions in the int.

int value = intermediate >> bits_per_int - 5;

Instead of masking rely on arithmetic shift right to keep the sign bit.