unsigned char sdvig_bita_vlevo (unsigned char arg, int n)
{
int bitsize;
unsigned char hi;
bitsize = 6; // битовый размер типа
hi = (arg >> (bitsize - n)) & ((1 << n) - 1); // Вырезаем старшие n бит
return ((arg << n) | hi) & ((1 << bitsize) - 1); //or'ом записываем туда вырезанную старшую часть
}
int main (void)
{
unsigned char bitm;
int i;
bitm=1;
for (i=0; i<10; i++)
{
bitm = sdvig_bita_vlevo (bitm, 1);
printf ("%x\n", bitm);
}
return 0;
}