Блог пользователя vogel

Автор vogel, 9 лет назад, По-русски

Сейчас пишу статью на wiki — конспекты про битовые операции, трюки и прочую битовую магию. Если вы знаете полезные трюки с битами, которые применяются в алгоритмах, а также просто прикольные вещи, то делитесь своими трюками в комментариях. Также приветствуются извращённые решения известных задач. Например: обменять значения переменных, не использую третью переменную с помощью XOR.

Приветствуются комментарии в виде:

  • Описание задачи
  • Решение задачи в виде кода, по-возможности короткое объяснение для не очевидных трюков.

Пример идеального комментария:
Является ли число степенью двойки?

unsigned int v; // we want to see if v is a power of 2
bool f;         // the result goes here 

f = v && !(v & (v - 1))

Короткое объяснение: Пусть v — это степень двойки (в двоичном представлении 1 единица и k нулей справа), тогда v — 1 в двоичном представлении это число, состоящее из k единиц. Очевидно, что побитовое И чисел
v и v — 1 должно давать в результате 0.

Задача для затравки: Найти младший единичный бит за O(1)

UPD: Интересные ссылки из комментов

Полный текст и комментарии »

  • Проголосовать: нравится
  • +50
  • Проголосовать: не нравится