Существуют библиотеки bignum, такие как gmp - некоторые обеспечивают произвольную точность (... настолько, насколько может справиться ваша память), некоторые имеют просто нелепые ограничения - переменные с плавающей запятой с 256-байтовой базой, 256-байтовой мантиссой.
Методы очень похожи на обычную программную эмуляцию FPU, просто итерируя по большему количеству байтов данных для каждого вычисления, операции напоминают то, как вы вычисляете это на бумаге. Если у вас есть 256-байтовое целое число, его можно рассматривать как обычное число из 256 базовых256 цифр ...
простое сложение целых 256-байтовых чисел (полностью неоптимизировано ... числа должны сохранять длину и т. Д.)
unsigned char x[256];
unsigned char y[256];
unsigned char sum[256];
int overflow=0,tmp;
for(unsigned char i=0;i<256;i++)
{
tmp = x[i] + y[i] + ovr;
sum[i] = tmp % 256;
overflow = tmp / 256;
}