Как можно работать с целыми числами размером более 64 бит в C++?

Как можно работать с целыми числами, которые требуют большего диапазона, чем unsigned long long, но при этом поддерживать операцию деления по модулю без использования дополнительных сложных классов?
  • 4 марта 2024 г. 19:48
Ответы на вопрос 2
В C++11 и более поздних версиях вы можете использовать тип данных `__int128`, который представляет собой 128-битное целое число. 

Применяя этот тип данных, вам можно выполнять операции с целыми числами, которые выходят за пределы диапазона `unsigned long long`. Однако стоит помнить, что `__int128` не является стандартным типом данных и может не поддерживаться на всех компиляторах. 

Чтобы выполнить операцию деления по модулю для чисел типа `__int128`, можно использовать следующий код:

```cpp
__int128 a = 10000000000000000000;
int b = 123;
__int128 remainder = a % b;
```

Таким образом, можно работать с целыми числами большего размера в C++, используя `__int128`, и выполнять операцию деления по модулю без дополнительных сложных классов.
Если не реализовывать самостоятельно, то тогда брать стороннюю библиотеку (гугли: длинная арифметика/bigint) 

А на сколько больше число? Сколько бит нужно?
Вообще вариант один:
Представить его как массив байт (тоесть условно вместо 8 байт - 16 или даже больше, или как энное число uint64)
И дальше руками реализовать арифметику.

Если хватит 128 бит и собираешь под x64, то можно взять нестандартный __int128_t
Похожие вопросы