Bit Hacks

Как може с един ред да се обърнат битовете в един байт, т.е. от abcdefgh da stane hgfedcba. Ето как:

b = ((b * 0x0802LU & 0x22110LU) | (b * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16

А ако на разположение имаме 64 битови регистри:

b = (b * 0x0202020202ULL & 0x010884422010ULL) % 1023

Как да преброим с колко нули свършва едно целичислено число?

unsigned int v; // find the number of trailing zeros in v
int r; // the result
float f = (float)(v & -v);
r = (*(unsigned int *)&f >> 23) - 0x7f;

Тези, и още много подобни хитрини, има на тази страница.


Моля използвайте кирилица!