Напишите программу которая обнуляет заданное количество последних бит числа
Перейти к содержимому

Напишите программу которая обнуляет заданное количество последних бит числа

  • автор:

1647. Обнулить биты

Дано целые числа n и k . Обнулите в числе n его последние k бит и выведите результат. Рекомендуется сделать эту задачу без использования циклов.

Вход. Два числа n (0 ≤ n ≤ 2 31 – 1) и k (0 ≤ k ≤ 30).

Выход. Выведите число, полученное в результате обнуления k последних бит.

РЕШЕНИЕ

элементарная задача – битовые операции

Построим маску mask, в которой на последних k позициях будут стоять нули, а на остальных единицы. Искомый ответ равен битовой операции “and” входного значения n и маски mask .

Требуемую маску можно также получить, сдвинув число -1 (в битовом представлении все единицы) на k позиций влево. после чего k правых бит в нем примут значение 0.

Еще одно решение: можно сдвинуть число n на k бит вправо, а затем на k бит влево. То есть ответом будет значение ( n >> k) k.

Читаем входные данные.

Вычисляем и выводим ответ.

Реализация второй вариант

Обнулить последние биты

Author24 — интернет-сервис помощи студентам

Напишите программу, которая обнуляет заданное количество последних бит числа.

Входные данные
Во входном потоке в единственной строке через пробел записаны два целых числа A (−231≤A≤231−1) и i (0≤i≤32).

Выходные данные
В выходной поток следует записать единственное целое число — число A, у котого обнулены последние i бит.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

В каждом байте числа обнулить 0-ой и 7-ой биты и сделать единичными 3-ий и 4-ый биты
Надо: Прочитать беззнаковое целое число из стандартного потока ввода и в каждом байте числа.

Обнулить определенные биты
Как обнулить определенные биты в регистре? Например AX=ABCD нужно сделать AX=0B00. Я тут сам.

Можно ли обнулить биты с использованием XOR
Здравствуйте, есть двоичное 16 битное число, можно ли с помощью XOR обнулить 4, 7, 10 биты.

Обнулить биты указателя типа void*
Привет:) Необходимо занулить, скажем, 4 последних бита указателя типа void*. Пробовал побитовые.

Арифметика: Условия задач

Во всех упражнениях нельзя использовать арифметические операторы сложения, умножения, вычитания, деления. Вместо них нужно использовать побитовые операторы & , | , ~ , ^ , > . Входное число A не превышает 2 32 -1 (если это не указано особо). Номера битов всегда задаются корректно, то есть принимают значения от 0 до 31. Ввод и вывод данных производится через стандартные потоки ввода-вывода.

Для решения этой задачи надо использовать операции сдвига вправо и сдвига влева

Напишите программу, которая обнуляет заданное количество последних бит числа

Информатика. 10 класс (Повышенный уровень)

1. Даны два натуральных числа a и b . Составить программу, реализующую для этих чисел битовую операцию по модулю два.

2. Вычислите xor всех чисел на отрезке [a, b] .

3. Реализуйте программы из примера 27.16. Протестируйте для различных входных данных.

4. Дано число n . Используя битовые операции, замените единицу в младшем разряде двоичной записи числа n на ноль.

5. Даны два натуральных числа a и n . Найдите такое минимальное натуральное число b , что a xor b нацело делится на n .

6. Даны натуральные числа а и k . Выведите число, которое состоит только из k последних бит числа а (то есть, используя битовые операции, обнулите все биты числа а, кроме последних k ).

7. Даны натуральные числа n и k . Используя битовые операции, обнулите в числе n его последние k бит и выведите результат.

8. Значением функции Фенвика для числа n называется максимальная степень двойки, на которую нацело делится число n . По заданному числу n определите для него значение функции Фенвика.

9. Дано натуральное число. Определите, сколько раз встречаются две подряд идущие единицы (11) в двоичном представлении этого числа (в двоичном представлении 11110111 оно встречается 5 раз).

10. Дано натуральное десятичное число n . Поменяйте местами два бита с заданными номерами в двоичном представлении этого числа. Например, если n = 5 и требуется поменять биты с номерами 1 и 2, то ответом будет 3.

11. Дано натуральное десятичное число n . Вычеркните i -й бит из двоичного представления этого числа (младшие i -го биты остаются на месте, старшие сдвигаются на один разряд вправо). Например, если n10 = 29 (n2 = 111012) и i = 1 , ответом будет 1510 (11112) .

12. Даны три натуральные числа. Найдите новое число, каждый бит которого равен тому значению, которое встречается чаще среди битов с таким же номером у данных чисел.

13. Для настольной игры используются карточки с номерами от 1 до n (натуральное число n не превышает 10 6 ). Одна карточка потерялась. Составьте программу ее поиска. Задано: число n и n — 1 номеров оставшихся карточек.

14. Дома у Ксюши было 2 одинаковых набора кубиков из английских букв, но во время очередной уборки один из кубиков затерялся. Помогите Ксюше определить, какой из кубиков отсутствует в одном из наборов.

15. Дано натуральное десятичное число n . Образуются все возможные левые циклические сдвиги двоичного представления числа n , у которых первая цифра числа переносится в конец.

Например, если n = 1110 (10112) , то его циклические сдвиги: 01112, 11102, 11012, 10112 . Максимальное значение m у всех полученных таким образом чисел будет иметь число 11102 = 1410 .

Составьте программу, которая для заданного числа n определяет максимальное значение m .

16. Дано натуральное число n . С этим числом разрешено неограниченное количество раз проводить перестановку значащих бит заданного числа, получая таким образом новые числа. Найдите наибольшую разность двух чисел, каждое из которых можно получить в результате выполнений таких перестановок.

17. Дано натуральное число a . Напишите выражение, результатом которого является значение данного числа, у которого младший нулевой бит установлен в 1.

18. Дано натуральное число a . Напишите выражение, результатом которого является преобразование данного числа в число, у которого все биты установлены в 1, кроме младшего нулевого бита .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *