Хитрости с битовыми операциями на примере языка Си

В случае, когда производительность критична, можно использовать различные средства оптимизации вычислений. Одним из таких средств являются битовые операции (если алгоритм уже не подразумевает их использование).

Например, координаты в двухмерном пространстве можно хранить в виде чисел Мортона, когда абсцисса и ордината записываются одним двоичным числом, позволяющим сравнивать расстояния между точками за одну операцию.

unsigned short x;   // Алгоритм смешивает x и y так,
unsigned short y;   // что четные биты z принадлежат числу x, а нечетные --- y;
unsigned int z = 0; // Число Мортона для точки.

for (int i = 0; i < sizeof(x) * CHAR_BIT; i++)
{
  z |= (x & 1U << i) << i | (y & 1U << i) << (i + 1);
}

В этой статье вы найдете больше разных «битовых трюков» на примере C.