Манипулирането на битове е актът на алгоритмично манипулиране на битове или други части от данни, по-кратки от дума. Задачите на компютърното програмиране, които изискват манипулиране на битове, включват контрол на устройството на ниско ниво, алгоритми за откриване и коригиране на грешки, компресия на данни, алгоритми за криптиране и оптимизация. За повечето други задачи съвременните езици за програмиране позволяват на програмиста да работи директно с абстракции вместо с битове, които представляват тези абстракции. Изходният код, който извършва битова манипулация, използва побитовите операции: И, ИЛИ, XOR, НЕ и евентуално други операции, аналогични на булевите оператори; има също премествания на битове и операции за преброяване на единици и нули, намиране на висока и ниска единица или нула, задаване, нулиране и тестване на битове, извличане и вмъкване на полета, маскиране и нулиране на полета, събиране и разпръскване на битове към и от определени битови позиции или полета . Целочислените аритметични оператори могат също да въздействат на битови операции във връзка с другите оператори.

Манипулирането на битове в някои случаи може да премахне или намали необходимостта от преминаване през структура от данни и може да даде многократно ускорение, тъй като битовите манипулации се обработват паралелно.

В тази публикация ще обсъдим няколко такива интересни хака за манипулиране на битове и въпроси за интервю -

  1. Бит хакове — част 1 (основна)
  2. Бит хакове — част 2 (Игра с k’th бит)
  3. Бит хакове — част 3 (Игра с най-десния зададен бит от число)
  4. Бит хакове — част 4 (Игра с букви от английската азбука)
  5. Бит хакове — Част 5 (Намиране на абсолютна стойност на цяло число без разклоняване)
  6. Бит хакове — част 6 (случайни проблеми)
  7. Алгоритъмът на Брайън Керниган за преброяване на множество битове в цяло число
  8. „Изчисляване на паритет на число с помощта на справочна таблица“
  9. Преброяване на зададени битове с помощта на справочна таблица
  10. Намерете минимума или максимума на две цели числа, без да използвате разклоняване
  11. Умножете 16-битови цели числа с помощта на 8-битов множител
  12. Закръглете до следващата най-висока степен на 2
  13. Закръглете до предишната степен на 2
  14. Разменете отделни битове на дадена позиция в цяло число
  15. Проверете дали даденото число е степен на 4 или не
  16. Обратни битове на дадено цяло число
  17. „Намиране на нечетен елемент в масив при еднократно обхождане“
  18. Намерете два нечетни елемента в масив, без да използвате допълнително пространство
  19. Разменете два бита на дадена позиция в цяло число
  20. Добавяне на двоично представяне на две цели числа
  21. Размяна на съседни битове на число
  22. Отпечатайте всички различни подмножества от даден набор
  23. Извършване на деление на две числа без използване на оператор за деление (/)
  24. Проверете дали съседните битове са зададени в двоично представяне на дадено число
  25. „Условно отричане на стойност без разклоняване“
  26. Намерете два дублиращи се елемента в масив с ограничен диапазон (използвайки XOR)
  27. Намиране на липсващо число и дублиращи се елементи в масив
  28. Проверете дали даденото число е степен на 8 или не
  29. Кръгово изместване на двоично представяне на цяло число с k позиции
  30. Решаване на даден набор от задачи без използване на оператори за умножение или деление
  31. Обратни битове на цяло число чрез справочна таблица
  32. Генериране на двоични числа между 1 и N
  33. Ефективно прилагане на мощностна функция | Рекурсивно и итеративно
  34. Намиране на квадрат на число без използване на оператор за умножение и деление
  35. „Генериране на мощностен набор от даден набор“
  36. „Кодиране на Хъфман“
  37. „Намерете всички странни елементи в масив с ограничен диапазон от елементи“