Назад к вопросам
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)— короткая форма того же действия. - Операция не влияет на остальные биты.
- Для битовых операций удобнее использовать беззнаковые типы, чтобы избежать проблем со сдвигами.