Манипулирането на битове е актът на алгоритмично манипулиране на битове или други части от данни, по-кратки от дума. Задачите на компютърното програмиране, които изискват манипулиране на битове, включват контрол на устройството на ниско ниво, алгоритми за откриване и коригиране на грешки, компресия на данни, алгоритми за криптиране и оптимизация. За повечето други задачи съвременните езици за програмиране позволяват на програмиста да работи директно с абстракции вместо с битове, които представляват тези абстракции. Изходният код, който извършва битова манипулация, използва побитовите операции: И, ИЛИ, XOR, НЕ и евентуално други операции, аналогични на булевите оператори; има също премествания на битове и операции за преброяване на единици и нули, намиране на висока и ниска единица или нула, задаване, нулиране и тестване на битове, извличане и вмъкване на полета, маскиране и нулиране на полета, събиране и разпръскване на битове към и от определени битови позиции или полета . Целочислените аритметични оператори могат също да въздействат на битови операции във връзка с другите оператори.
Манипулирането на битове в някои случаи може да премахне или намали необходимостта от преминаване през структура от данни и може да даде многократно ускорение, тъй като битовите манипулации се обработват паралелно.
В тази публикация ще обсъдим няколко такива интересни хака за манипулиране на битове и въпроси за интервю -
- Бит хакове — част 1 (основна)
- Бит хакове — част 2 (Игра с k’th бит)
- Бит хакове — част 3 (Игра с най-десния зададен бит от число)
- Бит хакове — част 4 (Игра с букви от английската азбука)
- Бит хакове — Част 5 (Намиране на абсолютна стойност на цяло число без разклоняване)
- Бит хакове — част 6 (случайни проблеми)
- Алгоритъмът на Брайън Керниган за преброяване на множество битове в цяло число
- „Изчисляване на паритет на число с помощта на справочна таблица“
- Преброяване на зададени битове с помощта на справочна таблица
- Намерете минимума или максимума на две цели числа, без да използвате разклоняване
- Умножете 16-битови цели числа с помощта на 8-битов множител
- Закръглете до следващата най-висока степен на 2
- Закръглете до предишната степен на 2
- Разменете отделни битове на дадена позиция в цяло число
- Проверете дали даденото число е степен на 4 или не
- Обратни битове на дадено цяло число
- „Намиране на нечетен елемент в масив при еднократно обхождане“
- Намерете два нечетни елемента в масив, без да използвате допълнително пространство
- Разменете два бита на дадена позиция в цяло число
- Добавяне на двоично представяне на две цели числа
- Размяна на съседни битове на число
- Отпечатайте всички различни подмножества от даден набор
- Извършване на деление на две числа без използване на оператор за деление (/)
- Проверете дали съседните битове са зададени в двоично представяне на дадено число
- „Условно отричане на стойност без разклоняване“
- Намерете два дублиращи се елемента в масив с ограничен диапазон (използвайки XOR)
- Намиране на липсващо число и дублиращи се елементи в масив
- Проверете дали даденото число е степен на 8 или не
- Кръгово изместване на двоично представяне на цяло число с k позиции
- Решаване на даден набор от задачи без използване на оператори за умножение или деление
- Обратни битове на цяло число чрез справочна таблица
- Генериране на двоични числа между 1 и N
- Ефективно прилагане на мощностна функция | Рекурсивно и итеративно
- Намиране на квадрат на число без използване на оператор за умножение и деление
- „Генериране на мощностен набор от даден набор“
- „Кодиране на Хъфман“
- „Намерете всички странни елементи в масив с ограничен диапазон от елементи“