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.
Читаем входные данные.
Вычисляем и выводим ответ.
Реализация второй вариант
Обнулить последние биты
Напишите программу, которая обнуляет заданное количество последних бит числа.
Входные данные
Во входном потоке в единственной строке через пробел записаны два целых числа 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*. Пробовал побитовые.
485 / 333 / 132
Регистрация: 14.06.2016
Сообщений: 650
Сообщение было отмечено iSmokeJC как решение
Решение
i != 0 ? A & -(1 << i) : A
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Логические операции: обнулить, установить биты в числах
Даны два числа в двоичном виде. В первом числе старшие (4 разряда) разряды обнулить. Во втором.
Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат
нужна помощь в битовых операциях.Ввести целое число A. Инвертировать все биты с 4 по 8, включая.
Почему не работает этот код?
Входные данные
Дано целое число A и натуральное число i.
Выходные данные
Обнулите у числа A его последние i бит и выведите результат обнуления.
public class AplusBpublic static void main(String[] args) Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
a = a System.out.print(a);
>
>
Почему тогда в итоге код, предложенный мной, не подходит для решения задачи?
Лучший ответ
вы сдвигаете биты влево, а по условию задачи вы должны их обнулить. верните обратно >>
DELETED DELETEDУченик (213) 6 лет назад
Т. е. я должен именно обнулить два бита этого числа, а не просто сдвинуть число, дополнив его нулями?
Новый вопрос как их обнулить?
Άηϑρέΰ ҂ Искусственный Интеллект (179536) при сдвигании, те биты что выходят за границу они пропадают, а при возвращении обратно, заполняются нулями, например двигаем число 11100001 вправо на 4, получаем 00010000 и когда вернем влево на 4 получим 00000001. выводы думаю сделаете сами. это касается что влево, что вправо. так как у данных языков нет циклического сдвига..
Напишите программу, обнуляющие все биты числа, кроме нескольких последних
Помогите пж срочно даю 60 балов. Написати код для розв’язку задач: 1.Знаходження середнього значення: Задача полягає в обчисленні середнього арифметич … ного для набору чисел. Вам потрібно ввести числа, обчислити їх суму і поділити на кількість чисел. 2.Знаходження найменшого числа: Задача полягає в пошуку найменшого числа серед заданого набору. Введіть числа і знайдіть найменше серед них. 3.Підрахунок суми чисел до певного числа: Задача полягає в знаходженні суми всіх чисел від 1 до заданого числа N. Використовуйте формулу суми арифметичної прогресії для розв’язання цієї задачі. 4.Перевірка на простоту: Задача полягає в перевірці, чи є задане число простим. Просте число ділиться лише на 1 і саме себе. Вам потрібно перевірити, чи має задане число інші дільники, окрім 1 і самого себе. 5.Переведення градусів Цельсія в Фаренгейта: Задача полягає в переведенні температури з градусів Цельсія в градуси Фаренгейта за допомогою лінійного алгоритму. Використовуйте формулу переведення: F = (C × 9/5) + 32, де F — температура в Фаренгейтах, а C — температура в Цельсіях.
Які бувають висловлювання? Наведіть по три приклади на кожен вид висловлювання?
хмара це1) велике текстове поле2) деякий сервер, де зберігаються дані та програми, які використовують користувачі за допомогою глобальної мережі3) про … грама для роботи з текстовою інформацією 4) інший варіант