14 / 14 / 4
Регистрация: 08.11.2010
Сообщений: 172

Как выполнить сложение по модулю 2^64+13

14.12.2014, 15:31. Показов 5836. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет, есть два 64 битовых числа, как можно сделать сложение по модулю mod(2^64+13)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2014, 15:31
Ответы с готовыми решениями:

Как выполнить сложение полей?
как сделать и по какому событию, чтобы получалась сумма двух тэгов input text по onchange или по onexit из тэга, и где нибудь сразу...

Как выразить сложение по модулю 2(исключающее ИЛИ) через конъюнкцию, дезъюнкцию и отрицание?
Помогите выразить сумматор по модулю 2 через 3 операции:конъюнкцию, дезъюнкцию и отрицание. Набор из 2-х переменных...

Сложение по модулю 2
Здраствуйте! Подскажите пожалуйста,Есть два массива, нужно сложить их по модулю 2, не могу придумать как. #include...

19
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2014, 15:34
По какому модулю?
0
14 / 14 / 4
Регистрация: 08.11.2010
Сообщений: 172
14.12.2014, 15:37  [ТС]
вот полное выражение
x=(((a*m+b)mod(2^64+13))mod(2^64)
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2014, 15:41
Я говорю, mod - это что за функция? И что такое ^ в твоей записи?
0
14 / 14 / 4
Регистрация: 08.11.2010
Сообщений: 172
14.12.2014, 15:44  [ТС]
mod - модуль
^ - степень
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2014, 15:51
Модуль числа - функция abs().
Возведение в степень для двойки 2^64 через сдвиг 1 << 64.
C++
1
abs((1 << 64) + 13)
Если я правильно понял твою запись.
1
35 / 17 / 10
Регистрация: 13.12.2014
Сообщений: 107
14.12.2014, 16:08
nmcf Я сомневаюсь что такой вариант прокатит.
Мне кажется что в результате получится 0, если компилятор будет использовать 32-x битное или 64-x битное значение. То что он будет использовать 128-ми битное значение я сомневаюсь.

Добавлено через 6 минут
для возведения в степень лучше использовать pow(значение, степень)
0
place status here
 Аватар для gunslinger
3180 / 2208 / 640
Регистрация: 20.07.2013
Сообщений: 5,896
14.12.2014, 16:11
mod здесь скорей всего остаток от деления, пусть и называется модулем.
0
14 / 14 / 4
Регистрация: 08.11.2010
Сообщений: 172
14.12.2014, 16:32  [ТС]
так что делать тогда с mod(2^64+13)?
я пытаюсь реализовать этот алгоритм https://ru.wikipedia.org/wiki/DFC
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2014, 17:37
Ну я подумал, что здесь целочисленная арифметика. Если нет, то, разумеется, pow().
0
 Аватар для Гром
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
14.12.2014, 18:19
Самый простой и наглядный способ - использовать длинную арифметику (гуглим "длинная арифметика"). Возможно, существуют способы получить результат, использую 32- или 64-битные целые, но они, вероятно, будут гораздо более сложными для понимания и/или реализации.
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
14.12.2014, 18:24
C++
1
2
3
4
long double a=1234,b=5678;
const long double mod=18446744073709551629.0;
double res=a+b;
cout<<(res<mod?res:res-mod)<<endl;
0
 Аватар для Гром
212 / 131 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
14.12.2014, 18:43
Цитата Сообщение от Renji Посмотреть сообщение
C++
1
2
3
4
long double a=1234,b=5678;
const long double mod=18446744073709551629.0;
double res=a+b;
cout<<(res<mod?res:res-mod)<<endl;
Не получится. double тоже имеет размер 64 бита. Кое-где long double может иметь больший размер (обычно 80). Но даже если long double будет иметь размер в 128 бит, то под мантиссу пойдет только часть из них, и при значении a, скажем, 2^63 + 2^10 + 1 мы даже теоретически не сможем получить точного результата, не говоря уж о том, что числа с плавающей точкой работают иначе, чем целые.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2014, 18:46
Посмотрел описание. Арифметика целочисленная, mod - остаток от деления.
Там нужны целые 128 бит. Стандартными средствами не решить, нужно искать какую-то библиотеку.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
14.12.2014, 18:48
Даже если long double будет на x86 80-битный, у него мантисса 64 бита - маловато. Так что тут полудлинная арифметика.
0
Диссидент
Эксперт C
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
14.12.2014, 19:03
C++
1
2
3
4
5
6
7
unsigned long a1, a2, b; // или другой 64-битный целый тип, поддерживаемый твоим компилятором
b = a1 + a2;
if (b >= a1) printf("%lu", b);
else {
 if (b < 13) printf("2^64 +%lu", b);
 else printf("%lu", b-13);
}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2014, 19:28
Байт, а где умножение?
0
Диссидент
Эксперт C
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
14.12.2014, 20:39
Цитата Сообщение от nmcf Посмотреть сообщение
Байт, а где умножение?
А тебе зачем? Это уже за отдельные деньги
Хотя, если немножко подумать - что такое умножение? Всего лишь последовательность сложений. И если тебе понравилось мое решение, разрешаю реализовать и умножение тож. Ссылка на источник - не обязательна.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2014, 20:41
Какие ещё деньги?
Я говорю, что в описании алгоритма предполагаются целые 128 бит, поэтому смысл твоего фрагмента с a1 + a2 мне не ясен.
0
Диссидент
Эксперт C
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
14.12.2014, 20:54
Цитата Сообщение от nmcf Посмотреть сообщение
Какие ещё деньги?
Это шутка. Понимаешь, шутка это
А доля шутки тут в том, что это уже другая задача.
Цитата Сообщение от nmcf Посмотреть сообщение
предполагаются целые 128 бит,
Для 128 бит задача тривиальна и пуста. Идея ее в том, что модуль на границе (за границей) разрядной сетки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2014, 20:54
Помогаю со студенческими работами здесь

Сложение по модулю 2^32 - 1
Если сложение по модулю 2^32 является обычной XOR-операцией. А такое сложение можно записать как: UINT xor32(UINT a, UINT b) { ...

Сложение по модулю
Есть код: procedure TForm1.Button1Click(Sender: TObject); var N, R, a, b, i, j: integer; Bin1, Bin2, S, s2, s1: string; begin...

Сложение по модулю 2
Здравствуйте, помогите реализовать программу, которая будет принимать вводимый текст, преобразовывать его в шестнадцатеричную систему через...

Сложение по модулю (2^32) -1)
Добрый вечер! Подскажите как реализовать сложение по модулю ((2^32) -1). Есть текстовый файл. Я считываю его, перевожу считанные данные в...

Сложение по модулю 2
В общем такая проблема: нужно реализовать сложение по модулю 2, для любого количества элементов(элементами являются векторы). Есть код...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Kubernetes с Apache Flink для обработки данных в реальном времени
Mr. Docker 17.05.2025
Kubernetes — это целая философия управления распределёнными приложениями. В отличие от "примитивных" решений вроде Docker Swarm, K8s (как его ласково называют в тусовке DevOps-инженеров) предлагает. . .
Использование декораторов в Python
py-thonny 17.05.2025
Если вы когда-нибудь задумывались о том, как красиво расширить функциональность кода без лишней возни и дублирования, декораторы в Python — та самая волшебная палочка, которую вы искали. По сути, это. . .
Как некоторые отстают в навыках поиска информации в сети. Дублирование страницы открытого адреса в сети.
Hrethgir 17.05.2025
. . . берём бразуер, для многих он является инструментом поиска информации в сети. Понятное дело, что чтобы переходить по сслыкам есть такая фишка - "открыть в новой вкладке", но, представим себе что вы. . .
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru