Реализуйте класс для представления длинных целых чисел (знаковых).
- Название класса:
BigInteger - Заголовочный файл:
biginteger.h - Файл реализации:
biginteger.cpp
Для класса BigInteger реализовать:
- Конструктор по умолчанию (инициализирует число нулём).
- Конструкторы от числовых типов.
- Явный конструктор от
std::string. - Конструктор копирования.
- Конструктор перемещения.
- Операторы:
- присваивания копированием,
- присваивания перемещением,
- сравнения.
- Арифметические операции: сложение, вычитание, умножение, деление, унарный минус, унарный плюс, инкременты и декременты.
- Внешнюю функцию
std::string to_string(const BigInteger &).
Требования:
- Разряды числа должны представляться как минимум 32-битными числами, все биты в их представлении должны использоваться.
- Пользоваться сторонними библиотеками при выполнении задания запрещено. Исключение
std::string(при реализации to_string и конструктора) иstd::numeric_limits.
- Кнут Д.Э. Искусство программирования. Том 2. Получисленные алгоритмы. Глава 4. Секция 4.3.
- Длинная арифметика
- Алгоритм деления
- "Modern Computer Arithmetic"
- "Multiple-Length Division Revisited: A Tour of the Minefield"