> Что такое битовые сдвиги и где они применяются (Android)
Уровень: junior · Роль: mobile · Категория: Технические вопросы
Компании: Иннотех
Стек: Android
> Пример ответа
Битовые сдвиги - это операции, которые перемещают биты числа влево или вправо на заданное количество позиций. В мобильной разработке под Android они чаще всего применяются для оптимизации производительности и работы с флагами.
Основные виды:
<<(сдвиг влево): каждый бит смещается влево, освободившиеся позиции заполняются нулями. Эквивалентно умножению на 2 в степени n.>>(сдвиг вправо с сохранением знака): биты смещаются вправо, старшие биты копируют знак числа (для отрицательных чисел). Эквивалентно делению на 2 в степени n с округлением вниз.>>>(логический сдвиг вправо): старшие биты всегда заполняются нулями, независимо от знака.
Где применяются в Android:
- Работа с флагами (битовыми масками): например, в
ViewGroupдля хранения состояния дочерних вью (фокус, кликабельность) в одномint. Сдвиги позволяют быстро устанавливать/проверять конкретные биты:flags |= (1 << position). - Оптимизация вычислений: замена умножения/деления на степени двойки (например,
x * 16наx << 4). Хотя современные компиляторы делают это автоматически, в критичных участках (рендеринг, анимации) это может снизить накладные расходы. - Кодирование данных: упаковка нескольких значений в одно число (например, координаты x и y в один
intдляMotionEventилиColor). Пример:packed = (x << 16) | y. - Хеширование и криптография: в алгоритмах вроде CRC32 или при работе с
MessageDigestдля побитовой обработки данных. - Работа с сетевыми протоколами и бинарными форматами: разбор заголовков пакетов (например, в Bluetooth или NFC), где данные упакованы в битовые поля.
Пример из Android SDK:
// Установка флага в View val VISIBLE = 0x00000000 val INVISIBLE = 0x00000004 val GONE = 0x00000008 // Сдвиг для маски: 1 << 2 = 4 (INVISIBLE)
Битовые сдвиги - низкоуровневый, но мощный инструмент, который в мобильной разработке помогает экономить память и ускорять операции, особенно в графике, анимациях и работе с сенсорами.
> Похожие задачи по mobile
Какая структура данных подходит для хранения количества букв в строках при проверке анаграмм
Как проверить, что все значения в мапе равны нулю
Знаете ли вы полную аббревиатуру state machine
Как работает get в Map
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью