М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
nbuiluk
nbuiluk
17.12.2022 00:10 •  Информатика

Условие
Даны два числа N и K. Требуется изменить число N так, чтобы в K-м бите этого числа в двоичной системе счисления стоял ноль, а все остальные разряды остались неизменными.

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

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

Формат выходных данных
Требуется вывести одно целое число ­— ответ на задачу.

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

👇
Ответ:
Maksgeem
Maksgeem
17.12.2022

Код в приложении.

Пояснения:

Посмотрим, как же нам решить задачу. Сначала, поймём как обнулить бит. Бит можно обнулить если использовать логическое И с нулём. Значит, нам нужно использовать логическое И на нужном бите. Как же это сделать? В С++ есть побитовые операции между двумя числами, но побитовое И (&) применяется между всеми битами двух чисел, т.е.

101\ \& \ 110 = (1 \&1)(0\& 1)(1 \& 0) = 100

Заметим, что

a \& 0 = 0\\a \& 1 = a

Числа в С++ с фиксированной разрядностью, т.е. битов всегда определённое кол-во. Исходя из условий задачи, тут нужен int - 32-битный тип.

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

Добиться этого мы сможем следующим образом. Сдвинем 1 влево на k бит и получим такое число, что все биты, кроме k-го равны 0, а k-ый равен 1, и используем побитовую инверсию (~), т.е. инвертируем каждый бит в числе.

Получив нужное число, выполняем побитовое И и обнуляем k-ый бит.

Как работают примеры:

n = 21 = 10101, \ k = 1\\n \& \sim(1

И второй пример:

n = 21 = 10101, \ k = 2\\n \& \sim (1


Условие Даны два числа N и K. Требуется изменить число N так, чтобы в K-м бите этого числа в двоично
4,6(25 оценок)
Открыть все ответы
Ответ:
daryaavdeeva01
daryaavdeeva01
17.12.2022

1-қадам Диаграмма типін таңдау келесі қадамға көшу үшін «Далее» яғни Жалағстыру батырмасын басу керек,

2-қадам Таңдалған диаграмма қалай көрінетіні шығады;

3-қадам Диаграмма параметрін орнату яғни аңыз пішімін, диаграмма тақырыбын енгізуге болады.

4- қадам Диаграмманың орналасуын көрсету яғни кестенің жанына немес кестеден бөлек жерге орналастыру түрін таңдау.

Егер диаграмма дұрыс құрылса, оның қандай мақсатта құрылғанын анықтау оңай болады. Ал диаграмма жақсы құрылу үшін, оған берілген, енгізілген ақпараттар анық әрі түсінікті болу керек.

Дайын диаграмманың негізігі мынадай элементтері болады: тақырыбы, тор, аңыз. Аңыз дегеніміз диаграммада берілген деректердің қатарларын ажыратады.

Дайын диаграмманың өлшемін, түрін, түсін өзгертуге және жоюға болады.

4,4(83 оценок)
Ответ:
санду7
санду7
17.12.2022

[20.01, 14:33] Салия: Косылмаижатыр

[20.01, 14:35] Салия: Менын косаика

[20.01, 14:35] Салия: И сурет жыберш

[20.01, 14:38] Салия: Ало

[20.01, 15:10] Салия: Косылмаижатыр бэоыбыр

[20.01, 15:14] Салия: https://link.brawlstars.com/invite/gameroom/ru?tag=XPWF847L

[20.01, 15:14] Салия: Мнаган кырш

[20.01, 15:17] Муслим:

[20.01, 15:18] Муслим: https://link.brawlstars.com/invite/gameroom/ru?tag=XPWYCRSL

[20.01, 15:23] Муслим: Ия

[20.01, 15:24] Муслим: https://link.brawlstars.com/invite/band/ru?tag=V2QUJRLY&token=m9a43zgp

[21.01, 10:07] Салия: Муслим боаввл стпрт оинаисынба

Объяснение:

просто

4,4(92 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ