unsigned char rol(unsigned char value, unsigned char roll) { roll %= sizeof(unsigned char) * 8; return (value << roll) | (value >> (8 * sizeof(unsigned char) - roll)); }