Страницы

Поиск по вопросам

среда, 3 апреля 2019 г.

Зачем нужны побитовые операторы и что они фактически делают в Си?

Здравствуйте! Объясните, пожалуйста, для чего нужны побитовые операторы и каков принцип их работы? Я уже несколько раз перечитывал главу K&R и читал в сети, но не пойму их. Если можно, с практическими примерами. Спасибо за понимание.


Ответ

Принцип работы предельно прост: идёт работа с битами целых чисел. Есть, например, число 10, оно в двоичной будет 1010, значит если это int (4 байта, 32 бита), то это будет: 0000 0000 . 0000 0000 . 0000 0000 . 0000 1010 Есть ещё, например, число 7. Оно будет равно: 0000 0000 . 0000 0000 . 0000 0000 . 0000 0111 Можно произвести конъюнкцию 7 & 10, т.е. поставить эти числа друг над другом и провести конъюнкцию каждого бита одного числа с соответствующим ему битом другого числа. Будет: 0000 0000 . 0000 0000 . 0000 0000 . 0000 0010 Такая же логика с "или", т.е. '|' и со "сложением по модулю 2", т.е. "^". В инете куча инфы, разумеется. Можете прочитать ещё про сдвиг (bitwise shift). Используется в комбинаторике, есть много примеров, например в алгоритме генерации множества всех подмножеств (используется и "сдвиг" и "побитовое и"). Или, может быть тоже будет интересно разобраться: бинарный алгоритм нахождения НОДа двух чисел

Комментариев нет:

Отправить комментарий