Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» запись чисел длиной 256 и 512 бит в С++

Автор: boginia
Дата сообщения: 26.05.2005 09:57
В проге на С++ нужно использовать числа длиной 256 и 512 бит.

Можно ли их записывать число 256 бит в виде шеснадцати 16-разрядных чисел, например:
75841 14521 21 51125 3624 254 2544 54124 25471 22323 54441 66554 8444 744 1554 5444

или есть другой способ?
Автор: X_Style
Дата сообщения: 26.05.2005 10:56
Может быть тебе подойдет хранить эти числа в строках, сложение и умножение на строках вроде бы не такая уж и сложная задача.
Автор: WiseAlex
Дата сообщения: 26.05.2005 11:30
boginia
используют обычно библиотеку длинной арифметики
http://algolist.manual.ru/maths/longnum.php
http://www.programmersheaven.com/zone3/cat970/16530.htm
http://www.codeguru.com/Cpp/Cpp/algorithms/math/article.php/c5091/
---
для непосредственного представления в коде можно использовать как строки, так и конструктор класса с разным количеством параметров, так и массив:

ALongIntClass newNumber(1,988972360,296896221); и.д. - по 9 десятичных цифр или использовать шестнадцатиричные
или
unsigned value={1,988972360,296896221};
ALongIntClass newNumber(value,3);
или
ALongIntClass newNumber("1988972360296896221");
Автор: boginia
Дата сообщения: 26.05.2005 12:23
Эти числа должны быть в массиве

Цитата:
256 бит в виде шеснадцати 16-разрядных чисел, например:
75841 14521 21 51125 3624 254 2544 54124 25471 22323 54441 66554 8444 744 1554 5444

Автор: mr_eoi
Дата сообщения: 26.05.2005 12:39
boginia
А что ты собираешься делать со своими длинными числами?
Форма представления длинного числа, как правило, выбирается исходя из алгоритмов его обработки, например, в одной из попавшихся мне задач числа требовалось хранить в виде массива 11-битовых элементов. Если для хранения - форма представления не играет роли, главное, чтобы запись и считывание проводились единообразно.
Автор: WiseAlex
Дата сообщения: 26.05.2005 13:02
boginia

Цитата:
Эти числа должны быть в массиве

так в чем проблема?
фактически запись числа в массив (если на PC, то начиная с младших разрядов) и дает в памяти длинное число бит за битом
т.е. нет разницы между
char val[4]={0x01,0x02,0x03,0x04};
и
unsigned val=0x04030201;
(справедлина для littleendian платформы - например PC)

Страницы: 1

Предыдущая тема: Delphi динамический массив из классов


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.