Sobes.tech
Назад к вопросам
Junior
232
questionbank

Как можно установить бит в 1, используя побитовую операцию ИЛИ?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Чтобы установить конкретный бит в 1, нужно использовать побитовое ИЛИ с маской, где нужный бит равен 1. Операция ИЛИ гарантирует, что этот бит станет 1, а остальные не изменятся. Это стандартный приём для установки флага.

Определение:

Побитовое ИЛИ (|) сравнивает биты двух чисел поразрядно и возвращает 1, если хотя бы один из битов равен 1. Чтобы установить k-й бит числа x в 1, используют маску 1 << k и выражение x | (1 << k).

Пример использования:

#include <stdio.h>

int main() {
    unsigned int x = 5;      // 0101
    unsigned int k = 1;      // хотим установить 1-й бит

    x = x | (1u << k);       // 0101 | 0010 = 0111

    printf("%u\n", x);       // 7
    return 0;
}

Пояснение кода:

  • 1u << k создаёт маску с единицей только в позиции k.
  • x | mask устанавливает этот бит в 1.
  • Если бит уже был равен 1, значение не изменится.
  • В примере число 5 в двоичном виде 0101, после установки 1-го бита получается 0111, то есть 7.

Ключевые моменты:

  • Для установки бита в 1 используется операция OR с маской.
  • Маска строится как 1 << k.
  • Выражение вида x |= (1u << k) — короткая форма того же действия.
  • Операция не влияет на остальные биты.
  • Для битовых операций удобнее использовать беззнаковые типы, чтобы избежать проблем со сдвигами.