|
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
|
||||||
Найти наибольшую степень двойки, на которую будет делиться введенное число08.12.2021, 11:18. Показов 7567. Ответов 55
Здравствуйте! Помогите, пожалуйста, перевести программу из С# в С++
0
|
||||||
| 08.12.2021, 11:18 | |
|
Ответы с готовыми решениями:
55
Найти наибольшую степень двойки, не превышающую заданного числа n |
|
2163 / 1241 / 511
Регистрация: 11.10.2018
Сообщений: 6,370
|
|
| 09.12.2021, 13:03 | |
|
Вы мой код смотрели. Посмотрите повнимательнее. int состоит из 4 байт, поэтому биты нумеруются у него с 0 до 31, СПРАВА НАЛЕВО. Поэтому в моей программе 1 сразу задвигаем на левый край, получаем число, это максимальная степень двойки.
1 2 4 8 Посмотрите как эти числа в бинарном(двоичном) представлении, это просто 1 сдвинутая на сколько-то разрядов вправо. Для этого служат операторы сдвига << и >>. Делим его и смотрим остаток это операция %. Опять же читайте документацию. Если остаток есть, то программа продолжит свою работу, т.е. сдвигаем max на 1 вправо и снова делим. Если поделилось без остатка то break; выход из цикла.
1
|
|
|
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
|
|
| 09.12.2021, 13:04 [ТС] | |
|
Volga_, ДАА, спасибо огромное вам, только на выход идет не p, а i. Все работает, огромное спасибо. А можете обьяснить, что в коде Folian? И как он будет выглядеть, так скажем, в общем коде?(имею ввиду, я так понимаю, что это лишь часть кода, а как будет выглядеть полноценный код с частью кода Folian). Это уже для общего развития, так сказать
0
|
|
|
Модератор
|
|
| 09.12.2021, 13:10 | |
|
1
|
|
|
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
|
|
| 09.12.2021, 13:21 [ТС] | |
|
FFPowerMan, извините, но это для меня прям сложно пока что) Я правильно понял, что нумерация идет справа налево, то есть, с 31(лево) до 0(право). Потом вы сделали 1-цу последней в этой нумерации, убрав ноль. Про бинарное представление понял, от 0001 до 1000. Все, понял, спасибо) Только max на вывод не надо (там вообще какие-то числа миллиардного разряда), ну и вместо самого числа (в случае с 1000 на вывод пошло число 8) нужно, чтобы пошла степень, но я думаю, что это поправимо. Спасибо вам за ваши труды!
Добавлено через 48 секунд ВСЕМ ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ! Добавлено через 1 минуту Volga_, от блин, все на английском( Ладно, все равно спасибо, переводчик встроенный есть, должен справиться
0
|
|
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||||
| 09.12.2021, 14:04 | ||||||||
|
Почитал тут.
0
|
||||||||
|
2163 / 1241 / 511
Регистрация: 11.10.2018
Сообщений: 6,370
|
||||
| 09.12.2021, 14:24 | ||||
|
Добавлено через 44 секунды Добавлено через 2 минуты
0
|
||||
|
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
|
||||||
| 09.12.2021, 14:42 | ||||||
0
|
||||||
| 09.12.2021, 17:00 | ||||||||||
![]()
![]()
2
|
||||||||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|
| 09.12.2021, 17:17 | |
|
0
|
|
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||
| 09.12.2021, 17:28 | |||
![]() Прошёлся по диагонали только; вечером время останется если - почитаю, пока некогда.
0
|
|||
| 09.12.2021, 17:41 | ||
Все то, что до % 37 - это выставленные единичные биты на том месте, где были начальные нули, а все остальные единицы занулены. Тривиальное преобразование через - 1 (получаем различие в младших нулевых разрядах) и ксор с исходным значением со сдвигом вправо как раз оставляет нам только нужные единицы. А далее остается только их посчитать. Но мы же не глупые студенты, мы не будем считать их через while. Уоррен считает их через бинарный поиск. Уже лучше, но мы чуть-чуть подумаем как можно улучшить. У нас получается всего 32 различных аргумента: 0...01, 0...011 и т.п. И надо для каждого из этих аргументов вернуть число единиц в нем. Можно запихнуть в мапку, но это из пушки по воробьям и не спортивно Предположим, что есть какое-то магическое число, которое будет давать уникальный остаток от деления всех этих возможных аргументов на себя. И если оно не очень велико, мы просто захардкодим массив, где по индексу - остатку от деления аргумента на это число будет лежать количество единичных бит аргумента. Делаем тривиальную проверку (написав простейший тестирующий кот) - вуаля, это число 37! Ближайшее простое число, большее 32. Можем позволить себе отрезать памяти на 37 интов для оптимизации расчетов. А дырки (несущеструющие остатки от деления аргументов на 37) заполняем чем угодно (например, нулями) - все равно они у нас не встретятся при работе функции.
2
|
||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
||||||||
| 13.12.2021, 21:44 | ||||||||
|
От такое (как раз из книжки) тож самое выдаёт, но без сдвигов ~val & (val - 1)Для 64 наковырял подобную, вроде работает
1
|
||||||||
| 13.12.2021, 21:53 | |||||
![]() ![]() (хотел смайлик с огнем, но его нет)
1
|
|||||
|
Гвоздь Задиров
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
|
|||
| 13.12.2021, 22:09 | |||
)
1
|
|||
| 13.12.2021, 22:15 | ||
1
|
||
| 13.12.2021, 22:15 | |
|
Определить,делиться ли введённое число Найти вероятность того, что наугад взятое 5-значное число будет делиться на 39 Пользователь вводит натуральное число. Найти минимальную цифру этого числа и возвести введённое число в степень
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|