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