Dronton2
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: если в задании про количиство битов в числе? | см. задание, сформулированное вами выше: Цитата: Напишите программу, которая будет выполнять проверку - является ли указанное число степенью двойки или нет. | Где в задании говорится про количество битов в числе? Кроме того, вы писали, что тема была про логические операции. Вероятно, препод полагал, что студенты должны в решении использовать логические операции, а не вызовы библиотечных функций. Цитата: не понятен смысл: зачем побитово умножать число и число-1 | Если посмотреть на двоичное представление любого числа, являющегося степенью двойки, то видно, что старший разряд этого числа равен единице, а остальные разряды - нули. Если из этого числа вычесть единицу, то бывший старший разряд станет равным нулю, а остальные разряды - единицы. Очевидно, что побитовое умножение этих чисел всегда будет равно нулю. Если число не является степенью двойки, то кроме единицы в старшем разряде, будет присутствовать ещё по крайней мере одна единица в младших разрядах. Вычитание из такого числа единицы, поменяет биты только в разрядах от самой младшей единицы и ниже. Старшая единица не будет затронута. Побитовое перемножение таких чисел, не изменит, по крайней мере, старшую единицу. И результатом умножения будет число, не равное нулю. Это наиболее короткое решение вашей задачи, если использовать логические операции. | Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 13:05 04-03-2017 | Исправлено: Dronton2, 13:08 04-03-2017 |
|