Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/40: Рейтинг темы: голосов - 40, средняя оценка - 4.93
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335

Модульное деление на степень двойки

04.12.2012, 14:30. Показов 8543. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Раньше я всегда использовал примерной такой подход :
C++
1
2
3
4
5
6
int mod = 8;
int a = 90412488;
char b = 113;
int modA, modB;
modA = a & int(mod-1);
modB = b & char(mod-1);
Понятное дело, что можно написать функцию, которая определала бы тип и была бы красивой оберткой для такого подхода, но мне хватало. Сейчас встал опять вопрос с модульным делением на 2^x. Я бы использовал этот подход, но кто-то как-то сказал мне, что такое решение в каких-то случаях выдает не верный результат или ошибки. Я напрочь забыл, кто это сказал :/
Вопрос : в чем плох такой подход и как правильно?
Скорее всего, компиляторы сами производят подобную оптимизацию, но всё же.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2012, 14:30
Ответы с готовыми решениями:

Вычислить 10-ю степень двойки сложением, умножением и просто возведением в степень.
Написать код на С++ или С# или на Java Вычислить 10-ю степень двойки 1 - сложением, умножением и просто возведением в степень.

степень двойки
Вводится число. Напечатать YES, если оно является степенью двойки, NO - иначе. int a,b=1; cin>>a; for(;;) { b=b*2;...

Степень двойки
Изучаю программирование. Попытался решить известную задачу. Программа компилируется, но если ввести к примеру 8 она выдает "no"....

25
11 / 11 / 0
Регистрация: 19.03.2010
Сообщений: 101
04.12.2012, 17:18
Студворк — интернет-сервис помощи студентам
Кстати, в голове всплыло ограничение что число не должно быть отрицательное.
проверьте
1
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
04.12.2012, 17:18  [ТС]
taras atavin, то ли троль, то ли перепил и залез на форум.. Что тебе в названии темы не понятно? В нём сразу описано и задание, и то, что делить нужно лишь на степень двойки и никаких проверок, соответственно, не нужно производить. Даже если и не понял этого, я уже 3 раза ранее описал задание специально для тебя.

WhiteP, всё-таки есть оптимизация значит.. Сможете восстановить из этого ассемблерного листинга, что же происходит при делении на 2^x и как это написать на высоком уровне? Я в ассемблере соображаю совсем туго :/

Sanyur, насколько я помню, деление с остатком идет только на целые не отрицательные числа, но могу и ошибаться.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.12.2012, 17:23
Цитата Сообщение от nexen Посмотреть сообщение
taras atavin, то ли троль, то ли перепил и залез на форум
Я вообще не пью.
Цитата Сообщение от nexen Посмотреть сообщение
Что тебе в названии темы не понятно?
А может ты хочешь разделить 90412488 на 8 и от частного взять остаток от деления на 256?

Добавлено через 1 минуту
Цитата Сообщение от Sanyur Посмотреть сообщение
Кстати, в голове всплыло ограничение что число не должно быть отрицательное.
проверьте
Ну вообще да. Отрицательные хранятся в дополнительном коде, где полно нолей на месте единиц.
0
842 / 351 / 68
Регистрация: 20.11.2012
Сообщений: 843
04.12.2012, 17:25
nexen,
C++
1
2
3
4
5
modA = a & (mod-1)
if(a < 0)
{
     modA=((modA--)|(0-mod))++;
}
1
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
04.12.2012, 17:43  [ТС]
WhiteP, ах вот в чем была загвоздка. Как и сказал Sanyur, а я его не так понял. Спасибо. Вопрос снят.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.12.2012, 20:45
Цитата Сообщение от nexen Посмотреть сообщение
насколько я помню, деление с остатком идет только на целые не отрицательные числа, но могу и ошибаться.
Речь о делимом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2012, 20:45

Точная степень двойки
Написал прогу. Как сделать, чтобы при вводе числа не являющейся точной степенью двойки, прога не выводила степень? Вот задание: Дано...

Максимальная степень двойки
&quot;F(a, b) = x - 1, где x - максимальная степень двойки, на которую делится нацело a-b, если a ≠ b и F(a, b) = -1, если a = b.&quot; ...

Точная степень двойки
Само задание: Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. ...

Найти степень двойки
Дано целое число N&gt;0, являющееся некоторой степенью числа 2:N=2 ^k. Найти целое число К - показатель этой степени. Если можно на С

Степень двойки и остаток от деления
Цель: Возведите 2 в 75 степень, выведите остаток от деления полученного числа на 8^4-3 Входные данные: Нет входных данных Выходные...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru