Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 28.11.2017
Сообщений: 19

Вычисление значения 2^n

28.11.2017, 11:59. Показов 7959. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано n натуральное число. Подсчитай 2 степени n
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2017, 11:59
Ответы с готовыми решениями:

Вычисление значения функции
Здравствуйте. Написал программу на C#. Помогите пожалуйста "конвертировать" в Java. Программа, которая по введенному значению...

Вычисление значения по формуле
Задали в ВУЗ-е заочнику решить задачу, но я вообще без понятия как и что, так как с JAVA я просто не знаком. Сама формула: ...

Вычисление значения выражения
Есть ли в java фунция, которая вычисляет значение выражения. Например в js есть такая функция, она называется eval(). Так есть ли подобная...

21
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
28.11.2017, 12:13
Java
1
Math.pow(2, n);
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
28.11.2017, 19:32
Java
1
int pow = 2 << n - 1;
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
28.11.2017, 21:30
Цитата Сообщение от ArtemFM Посмотреть сообщение
int pow = 2 << n - 1;
почему 2, зачем -1? Зачем вообще так в степень возводить в яве?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
28.11.2017, 21:48
Цитата Сообщение от xoraxax Посмотреть сообщение
почему 2
Цитата Сообщение от AlisherBek Посмотреть сообщение
Подсчитай 2 степени n
Цитата Сообщение от xoraxax Посмотреть сообщение
зачем -1?
Потому что 2n == 2 << n-1?

Цитата Сообщение от xoraxax Посмотреть сообщение
Зачем вообще так в степень возводить в яве?
Ну… Наверное затем, что это самый простой способ получить степень двойки. Почти независимо от языка.
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
28.11.2017, 21:49
Цитата Сообщение от xoraxax Посмотреть сообщение
почему 2
Потому что по заданию 2^n

Цитата Сообщение от xoraxax Посмотреть сообщение
зачем -1
потому что 2^2 сдвигом это 2 << 1, а 2^3 -> 2 << 2

Цитата Сообщение от xoraxax Посмотреть сообщение
Зачем вообще так в степень возводить в яве?
Потому что сдвигом возведение в степень работает быстрее, чем Math.pow. Применим правда только для 2 в степени. Не зря часто в реализации коллекций часто умножают или делят сдвигом, да и проверял
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
28.11.2017, 21:52
Цитата Сообщение от korvin_ Посмотреть сообщение
2n == 2 << n-1?
1<<n?
Цитата Сообщение от korvin_ Посмотреть сообщение
Ну… Наверное затем, что это самый простой способ получить степень двойки. Почти независимо от языка.
ну да, пока случайно не наткнемся на переполнение, и какой-то не джава-путь это
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
28.11.2017, 21:56
Цитата Сообщение от xoraxax Посмотреть сообщение
1<<n?
так лучше, не спорю. Но для наглядности сделал 2 и от n отнял единицу

но 1 << n будет ещё быстрее
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
28.11.2017, 22:20
Цитата Сообщение от ArtemFM Посмотреть сообщение
Потому что сдвигом возведение в степень работает быстрее
если вы когда либо в своей жизни напишите программу где все проблемы быстродействия будут от возведения в степень, вам памятник поставят...

хотя не, не поставят...

если хотите заниматься побитовым дрочерством, идите в ассемблер или Си....джава для других целей.
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
28.11.2017, 22:26
Суть в том, что может это и не повлияет на скорость программы, вернее очень мало значимо. Но Вы не правы.
Конечно, в коде будет много мест, где можно бесконечно улучшать скорость (практически), но при написании кода уже можно учитывать какие-то нюансы и чем больше их учтено, тем оптимальнее скорость или затрачиваемые ресурсы. Так что ускорять программу в мелочах - это не плохо. Хуже, когда напишут "Работает и пёс с программой", а потом подгоняют под ТЗ заказчика - это неправильный путь
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
28.11.2017, 22:32
Цитата Сообщение от ArtemFM Посмотреть сообщение
Конечно, в коде будет много мест, где можно бесконечно улучшать скорость (практически), но при написании кода уже можно учитывать какие-то нюансы и чем больше их учтено, тем оптимальнее скорость или затрачиваемые ресурсы.
а потом хрен прочитаешь твои оптимизации и кому такой код нужен?
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
28.11.2017, 22:36
И не думаю, что прогеры Sun или Oracle писали коллекции и в ArrayList`e динамическое расширение сна 1,5 сделали сдвигом. в Linked List`e поиск элемента по индексу при выборе в методе откуда искать циклом с конца или сначала, деля длинну на 2 так же сделали сдвигом или в HashMap при поиске индекса для записи элемента также используют сдвиги ждали памятники возле окон

Добавлено через 3 минуты
и нужно учесть, что сдвиг использует 2 такта процессора, а обычный способ 4
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
28.11.2017, 22:41
ArtemFM, вы не различаете написание основной либы языка и написание вашей программы? При написании достаточно большой системы если вы будите оптимизировать типовые решения, через пол года вы сможете выкинуть свой может быть очень быстро работающий проект, т.к в этот проект вы больше не сможете добавить новый функционал за вменяемое время
0
 Аватар для ArtemFM
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
28.11.2017, 22:44
Люди, во первых, я дал один из вариантов. Во вторых, не думаю, что вот 2 << n - 1, когда-то прекратит своё существование в языке и этот вариант не позволит мне дополнять функционал программы. В третьих, если безумно совершенствовать программу, возможно и будут проблемы в дальнейшей её оптимизации. Но нужно различать безумное или разумное программирование. Так что не усложняйте. Сдвиги имеют право на жизнь!
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
28.11.2017, 22:44
Цитата Сообщение от xoraxax Посмотреть сообщение
1<<n?
А, ну да. =)

Цитата Сообщение от xoraxax Посмотреть сообщение
ну да, пока случайно не наткнемся на переполнение
На переполнение наткнёмся в любом случае, если только не BigInteger использовать. Но, думаю, для многих «повседневных» целей int'а и long'а хватит.

Цитата Сообщение от xoraxax Посмотреть сообщение
и какой-то не джава-путь это
Ну почему же? Это же простой численный метод, что тут, классы наворачивать? =)

Простой цикл — не очень эфективно (хотя это крохи, тем более для лабораторки, но и препод не оценит решения в лоб), оптимизированная версия с «более умной свёрткой степени» будет выглядеть сложней. А тут тебе и производительность, и краткость, и «не в лоб».

Цитата Сообщение от KEKCoGEN Посмотреть сообщение
если вы когда либо в своей жизни напишите программу где все проблемы быстродействия будут от возведения в степень, вам памятник поставят...
хотя не, не поставят...
Не понимаю твоего сарказма. Ладно бы код с манипуляцией с битами выглядел бы сложней и непонятней, так он наоборот самый простой.

Цитата Сообщение от KEKCoGEN Посмотреть сообщение
если хотите заниматься побитовым дрочерством, идите в ассемблер или Си....джава для других целей.
Т.е. авторы языка зря битовые операции реализовали? И java.util.BitSet по ошибке в стандартной библиотеке существует с рождения? И java.util.EnumSet от нефиг делать в 5-й версии добавили? А уж стандартные шаблоны для реализации Object.hashCode() во всех IDE через битовые сдвиги — так вообще дурдом? Если у тебя нет необходимости писать код, работающий с битами и байтами, это не значит, что ни у кого её нет.
1
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
28.11.2017, 22:50
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
вы не различаете написание основной либы языка и написание вашей программы?
А зачем их различать? У разработчиков JDK привилегии какие-то по работе с битовыми массивами? Может он свои коллекции пишет, а ля Google Collections или GNU Trove? =) Или пишет библиотеку для работы с каким-нибудь новым или старым бинарным протоколом или форматом, которой для Java ещё или уже нет.

Добавлено через 2 минуты
Цитата Сообщение от xoraxax Посмотреть сообщение
а потом хрен прочитаешь твои оптимизации и кому такой код нужен?
Так не читай. Я в сорцы JDK редко заглядываю, но пользоваться ж ей мне это не мешает. =)
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
29.11.2017, 00:20
Цитата Сообщение от korvin_ Посмотреть сообщение
Ладно бы код с манипуляцией с битами выглядел бы сложней и непонятней, так он наоборот самый простой.
в данном случае да, но важен прецедент...

Цитата Сообщение от korvin_ Посмотреть сообщение
Т.е. авторы языка зря битовые операции реализовали?
на то они а авторы языка чтобы дать функционал даже для 1-2% задач

Цитата Сообщение от korvin_ Посмотреть сообщение
А уж стандартные шаблоны для реализации Object.hashCode() во всех IDE через битовые сдвиги
в эклипсе ничего такого нет
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
29.11.2017, 00:52
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
на то они а авторы языка чтобы дать функционал даже для 1-2% задач
Что ж они макросы не реализовали? Value-типы? Generic'и? Лямбды? Модули? Алгебраические типы? Кортежи?

Цитата Сообщение от KEKCoGEN Посмотреть сообщение
в эклипсе ничего такого нет

Не по теме:

Пришлось поставить его ради этого случая (в очередной раз обплевался от его кривости… =))


А это что?:
Миниатюры
Вычисление значения 2^n  
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
29.11.2017, 01:00
Больше числовых полей — больше битомагии:
Миниатюры
Вычисление значения 2^n  
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
29.11.2017, 08:34
korvin_, хз, у меня умножение обычное
Миниатюры
Вычисление значения 2^n  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.11.2017, 08:34
Помогаю со студенческими работами здесь

Вычисление значения в цикле
Помогите написать код по условию. 1. Ввести с консоли два числа a и b 2.Сравнить значение переменной b со значением переменной d...

Вычисление значения определенного интеграла
Помогите решить задачку, а то я JAVA вообще не знаю. Есть формула: \int_{0}^{1}\ln (t+1)dt Есть некоторые уточнения по заданию: ...

Вычисление значения функции F=sin(x)-cosx^2+5
Нужно написать программу на java чтобы он высчитывал функцию F=sin(x)-cosx^2+5. Помогите пожалуйста

Вычисление функции и поиск максимального значения аргумента
Для начала написать программу, которая найдет f(n)=1!+2!+..+n!, при том, что n вводится вручную. Потом преобразовать эту программу так,...

Вычисление значения светового потока. Выбор значения нормировочной константы
В общем есть у меня фотоэлементтипа (СЦВ с сурьмяно-цезиевым фотокатодом), осветитель, диафрагма, микроамперметр, вольтметр, линейка. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru