Побитовые операции си

Есть код, который шифрует числа, путём перестановки первого и последнего бита в байте. Как сделать обратное действие?

unsigned int n = abs(atoi(arr[i]));
                //Замена бита
                if (n && ((n & 1) == 0))
                {
                    unsigned int i = -1;
                    for (unsigned int m = n; m; m >>= 1, i++);
                    n = (n & ~(1 << i)) | 1;
                }
 
    

Ответы (1 шт):

Автор решения: Harry

Вот как поменять местами первый и последний биты байта:

unsigned char rv(unsigned char n)
{
    return (n<<7)|(n>>7)|(n&0x7E);
}

Только очень уж убогое шифрование получается :) - https://ideone.com/wTKWSg

→ Ссылка