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

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

28.11.2017, 11:59. Показов 7921. Ответов 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_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
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_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
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_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
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_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
29.11.2017, 00:52
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
на то они а авторы языка чтобы дать функционал даже для 1-2% задач
Что ж они макросы не реализовали? Value-типы? Generic'и? Лямбды? Модули? Алгебраические типы? Кортежи?

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

Не по теме:

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


А это что?:
Миниатюры
Вычисление значения 2^n  
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru