Степень двойки

  • 9
  • Недоступна
Реализуй метод getPowerOfTwo(int power), который возвращает число 2 в степени power. Тебе нужно изменить реализацию метода getPowerOfTwo(int), используя соответствующий побитовый сдвиг.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (73)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ragnar Ragnar Lodbrock
Уровень 13, Казань, Russian Federation
20 июля, 10:40
Я не понял почему в условии написано "найти степень двойки", а в решении самого раша стоит 1? Может кто подскажет .
turb0
Уровень 10, Russian Federation
20 июля, 16:03
Готовое решение равноценно этому:
if (power >= 0) {
    return 2 << power - 1;
Оператор << по сути является умножением на 2. Мы просто либо убираем двойку из степени, либо отнимаем единицу от множителя, чтобы не получить: 2 * 2Epower
Ragnar Ragnar Lodbrock
Уровень 13, Казань, Russian Federation
21 июля, 06:55
Понял, спасибо огромное!🤝
Владоs
Уровень 13, Луганск, Украина
18 июля, 20:47
не проходило вот такое решение:
return (2 << power) >> 1;
по факту, я проверил и работают все степени до 30 (не включительно), то есть в условии написано, что метод должен возвращать 2 в степени power, 2 в ст 3 выводило 8, что верно, 2 в ст 10 выводило 1024, что тоже верно, а валидатор не принял это решение подсмотрел правильное:
return 1 << power;
вывод такой же, как и мой вариант. объясните пожалуйста, в чем моя проблема?
sakond #3107876
Уровень 24, Пермь, Russian Federation
12 июля, 14:43
решил result = (result << power - 1); Вопрос, почему в IDEA выводит на экран 1? При этом без разницы что после << ставить, выводит 1. На сайте всё выводит правильно.
Semyon Valuev
Уровень 14, Москва, Russian Federation
2 июля, 12:52
У меня получился более компактный код,до if как- то не додумался,решил сделать все намного проще,интересно на сколько он получился корректным,но проверку прошел собственно сам код: int result = 1 << power; return result; } }
Слава
Уровень 12, Москва, Russian Federation
28 июня, 15:37
2 << power - 1 работает. Но подскажите, получается что 2 << 0 = 1? Не нашел в инете, что происходит при 0вом сдвиге.
sqr
Уровень 18, Москва, United States
12 мая, 08:36
я так понимаю что эта единица убирает единицу степени двойки ??
Reika Java Developer
16 июля, 14:55
спасибо!
Anonymous #3040618
Уровень 13, Москва, Romania
8 мая, 08:21
Для понимания решения опирайтесь на эти утверждения: - При каждом сдвиге влево выполняется умножение числа на 2 - При каждом сдвиге вправо выполняется деление на два с отбрасыванием любого остатка. Пройдите по коду правильного решения с этим знанием - и все встанет на свои места.
rr3ds 3D_CNC_programmer
7 мая, 09:18
в трех чатах телеги попытался достать пояснение решения. Получил ответы - как сама задача так и предоставленное решение чушь. И судя по тому , что администрацией не было выложено ни какого пояснения как к ответу, так и к самой задаче, то прихожу к выводу... Задача автором писалась по накурке ...
cnsler
Уровень 40, Калининград, Россия
1 мая, 11:54
Либо условие задачи нужно поправить, упомянув, что при передаче отрицательной степени метод должен возвращать "что-то" (например "0"), либо все-таки принять у пользователя решение с изменением типа метода с int на вещественный тип (float или double) для возведения "двойки" в отрицательную степень..
Плавали, знаем.
Уровень 10, Ростов-на-Дону, Россия
5 августа, 12:31
Хорошее замечание.
BEZDNA
Уровень 20, Симферополь, Russian Federation
1 мая, 11:21
Не очень ясна тема,но в принципе немного разобрался:
return 2 << power -1;
Это в принципе всё решение
Слава
Уровень 12, Москва, Russian Federation
28 июня, 15:35
Я тоже так решил, только непонятно, почему при 0вом сдвиге, у нас проходит условие? 2 << 0 = 1?