Top.Mail.Ru
Ответы

Помогите решить задачу на C++. СРОЧНО! ДАЮ 50 БАЛЛОВ!

Даны два числа N и K. Требуется найти, какая цифра стоит в двоичном представлении числа N в K-м разряде.

В задаче запрещено использовать арифметические операции +, -, *, / и %, а также операторы if / switch и тернарную операцию.

Формат входных данных
В одной строке вводятся два целых числа N и K (0 ⩽ K ⩽ 30, 0 ⩽ N < 231). Разряды нумеруются от младшего к старшему начиная с нуля.

Формат выходных данных
Требуется вывести одно целое число ­(0 или 1) — k-й разряд числа n в двоичной системе счисления.

входные данные
21 1
0
выходные данные
21 2
1

По дате
По рейтингу
Аватар пользователя
Новичок

cout << (N>>K)&1

Аватар пользователя
Мастер

Лично моё решение (никуда не смотрел): cout << (N>>K)&1

Аватар пользователя
Мудрец

#define GETBIT(n, k) ((1 << (k)) & (n)) ? 1 : 0

int main() {
int n, k;
scanf("%d%d", &n, &k);
printf("%d\n", GETBIT(n, k));
return 0;
}