Без таблицы поиска (или прежде всего для создания объекта) вы также можете:
- сдвиг влево и AND с левой битовой маской (10101010)
- сдвиг вправо и AND с битовой маской справа (01010101)
- ИЛИ результаты вместе.
10 11 01 10
смещено влево на 01 10 11 00
замаскированный с 10101010 дает нам 00 10 10 00
смещено вправо (оригинал)
01 01 10 11
замаскированный с 01010101 дает нам 01 01 00 01
ИЛИ наши результаты вместе
01 11 10 01
Так что в C или C ++ вы могли бы сделать
unsigned char bitswap( unsigned char uch )
{
return ((uch<<1) & 0xAA) | (uch>>1) & 0x55 );
}
Просто запустите это для всех значений от 0x00 до 0xff (убедитесь, что ваш цикл завершается!), Чтобы сгенерировать вашу «таблицу».