Вопрос проверяет понимание побитового сдвига вправо (>>) и его применения для оптимизации операций деления на степень двойки или работы с битовыми флагами.
Побитовый сдвиг вправо (>>) — это операция, которая перемещает биты целого числа вправо, отбрасывая младшие биты и заполняя старшие биты в зависимости от знака числа (для знаковых чисел заполнение копирует знаковый бит, для беззнаковых — нулями). Основное применение — эффективное выполнение операций, которые можно выразить через деление на степени двойки.
Рассмотрим число 12 в двоичной системе: 1100. При сдвиге вправо на 1 позицию (12 >> 1) получаем 0110, что равно 6 в десятичной системе. Это соответствует делению 12 на 2. Сдвиг на 2 позиции (12 >> 2) даёт 0011 (3), что равно 12 / 4.
// Пример на JavaScript
let a = 16; // 10000 в двоичной
console.log(a >> 1); // 8 (1000)
console.log(a >> 2); // 4 (100)
console.log(a >> 3); // 2 (10)
// Использование для извлечения битов
let flags = 0b101101; // 45 в десятичной
let thirdBit = (flags >> 2) & 1; // Сдвигаем вправо на 2, затем маскируем младший бит
console.log(thirdBit); // 1 (третий бит был 1)
// Оптимизация: замена деления на 2
let value = 100;
let half = value >> 1; // Быстрее, чем Math.floor(value / 2)
console.log(half); // 50Вывод: Операция >> полезна, когда требуется эффективно делить целые числа на 2, 4, 8 и т.д., или манипулировать отдельными битами в компактных структурах данных, особенно в контекстах, критичных к производительности.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию