+380 57 755 34 05 team@fulcrum.software

32-х битная «маска» считается действительной, если ее двоичное представление содержит непрерывный ряд «1» и следующий за ним ряд «0».

Пример правильных битовых масок:              
11110000000000000000000000000000
11111000000000000000000000000000
11111111111100000000000000000000

Пример неправильных битовых масок: 10110000000000000000000000001000 01111100000000000000001000000001

Задача — разработать функцию проверки правильности битовой маски.

Критерии оценки Fulcrum Software:

Кандидат должен продемонстрировать навыки работы с битовым представлением чисел, а также умение придумать и реализовать нужный алгоритм.

Ожидаемые вопросы:

  1. Будет ли валидной битовая маска 00111111111100000000000000000000? То есть, обязана ли валидная битовая маска начинаться с единицы (и заканчиваться нулем)?
  2. Я вижу в этой задачи эффективный способ использования хардкода. Есть ли ограничения на это?

Оценка результатов:

Никаких особых знаний, приобретаемых с опытом, для задачи не нужно. Изюминкой является видение варианта с введением хардкода при положительном ответе на первый вопрос и понимание того, что в данной задаче этот «нехороший» прием может быть оправданным.
Так же существует «идеальное» решение данной задачи, содержащие всего три простых битовых операции и одну операцию сравнения, но это уже ближе к постановке задач на олимпиадах.