Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Как изменить порядок следования бит?
 
Есть ли какая-нибудь возможность изменить порядок следования бит в байте (слове, двойном слове)? Без организации цикла имеется ввиду. Язык С++.
 
1) Читай про побитовые операции: сдвиг вправо (>>,shr), сдвиг влево (<<,shl); операции И (&,and), ИЛИ (|,or), НЕ (~,not), исключающее ИЛИ (^,xor). Использовать совокупность этих операций - самый логичный и быстрый способ.

2) Использовать арифметические операции (сложение/вычитание и так далее) манипулируя со степенью двойки. Не очень красиво, но иногда используют.

3) Довольно дубовый, но простой приём. Позволяет установить значение любого бита в байте не особо не вникая.

Код
#include <windows.h>
#include <stdio.h>

struct ByteType
{
   int bit0:1;
   int bit1:1;
   int bit2:1;
   int bit3:1;
   int bit4:1;
   int bit5:1;
   int bit6:1;
   int bit7:1;
};

int main(int argc, char* argv[])
{
   unsigned char x;

   x = 0;
   printf("%d\n",x);

   ((ByteType *) &x)->bit1 = 1;
   
   printf("%d\n",x);
   return 0;
}
Изменено: Soldier of Fortune - 12.08.2008 18:11:54
Страницы: 1
Читают тему