Задать свой вопрос   *более 50 000 пользователей получили ответ на «Решим всё»

Задача 60413 ...

Условие

G3. Проверка значения бита
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Заданы два числа
a
и
n
. Проверить, присутствует ли в записи числа
a
n
-й бит. В данной задаче биты нумеруются с единицы.
Формат ввода
Входные данные содержат два целых числа
a и n (0≤a≤1018, 1≤b≤32).
Формат вывода Выведите 1, если в записи числа a присутствует n-й бит, и 0 в противном случае.
Пример 1
Ввод Вывод1
6
0
Пример 2
Ввод Вывод1
6 2
Язык с++

информатика 8-9 класс 3189

Решение

Можно решить битовыми операциями, такими как & и <<

Например вот эта функция, вернёт k-ый бит в числе number. Который соответсвенно, либо 0, либо 1

unsigned get_bit(unsigned k, int number) {
return ((unsigned)number & (1U << k)) > 0;
}

Объяснить это можно так

(1 << k) сдвигает биты в числе 1. k-раз влево. В результате мы получили число, в котором есть все 0, кроме позиции k, куда перемещается наш 1.

оператор & является побитовым И. Таким образом, каждый 0 будет равен 0 в нашем исходном n-ном числе на всех позициях, кроме k. Будет этот бит k от исходного числа как 0&1 = 0 и 1&1 = 1.

Написать комментарий

Меню

Присоединяйся в ВК