Как поменять местами значение бит 12 34 56 78? - PullRequest
0 голосов
/ 03 августа 2010

Пример: как двоичное значение 1010, так и после значения позиции бита пары свопов 0101

Ответы [ 6 ]

8 голосов
/ 03 августа 2010
int pairwise_bit_swap(int a) {
    return ((a & 0x55555555L) << 1) | ((a & 0xAAAAAAAAL) >> 1);
}
1 голос
/ 03 августа 2010
unsigned char swapped = ((original & 85) << 1) | ((original & 170) >> 1);
0 голосов
/ 03 августа 2010
((x << 1) & 0xAAAAAAAA) |( (x >>1) & 0x55555555)

где х в числе.

0 голосов
/ 03 августа 2010

Если вы хотите поменять местами биты с нечетной позицией на четную позицию (например, биты пары свопов 1 2, 3 4, 5 6 и 7 8)

без знака char a, x, y, z;
а = 2 + 4 + 8 + 128;
х = а & 170;
у = а & 85;
z = (x >> 1) | (y << 1); <br>

Z - это ответ.

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

0 голосов
/ 03 августа 2010

Вы можете использовать >> для сдвига битов.

0 голосов
/ 03 августа 2010

Вы можете использовать упомянутый метод здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...