Биты в байтах в переполнении стека

Я пытаюсь:

  1. преобразовать группу из 8 целых чисел, все значения 0 или 1, в байт
  2. изменить порядок битов этого байта
  3. вывести значение этого байта (в каком формате?) (я могу догадаться, пока не получу его прямо здесь)

Кроме того, мне не разрешают использовать STL для этой проблемы.

-1

Решение

Итак, вы хотите обратить биты в байте. То есть биты должны двигаться так:

from: 7 6 5 4 3 2 1 0
to:   0 1 2 3 4 5 6 7

Этот код сделает это, не элегантно — вы можете найти гораздо лучшие алгоритмы, если будете искать. Вы видите, как это работает?

uint8_t reverse_bits(uint8_t byte)
{
return ((byte & 0x01) << 7)
|((byte & 0x02) << 5)
|((byte & 0x04) << 3)
|((byte & 0x08) << 1)
|((byte & 0x10) >> 1)
|((byte & 0x20) >> 3)
|((byte & 0x40) >> 5)
|((byte & 0x80) >> 7);
}
1

Другие решения

Простой способ — замаскировать оставшиеся биты, как вы можете видеть в способ читать отдельные биты.

-1