Хранить и работать с большими числами в C
мне нужна помощь в работе с очень большими числами. Согласно Windows calc, показатель
174^55 = 1.6990597648061509725749329578093e+123 
Как я буду хранить это с помощью C (стандарт c99)?
int main(){
  long long int x = 174^55; //result is 153
  printf("%lldn", x);
}
            3 ответов
обычные типы В C обычно могут хранить только 64 бита, поэтому вам придется хранить большие числа в массиве, например, и писать математические операции самостоятельно. Но вы не должны изобретать колесо здесь - вы можете попробовать GNU Multiple Precision Arithmetic Library для этой цели.
и, как уже отмечалось в комментариях,^ операция является двоичным XOR. Для возведения в степень вам придется использовать математические функции, такие как pow.
если аппроксимация в порядке, вы можете использовать плавающую точку (float или double) числа.  И вам нужно pow, а не ^, как говорили комментаторы.
однако для криптографии аппроксимация не работает. Вам нужна поддержка арифметики с очень большими целыми числами. GMP обеспечивает общую поддержку арифметики множественн-точности. Многие криптографические пакеты также будут иметь такие алгоритмы в своем коде, либо через стороннюю библиотеку, либо встроенную; PuTTY имеет библиотеку bignum для больших целых чисел, и OpenSSL, вероятно, имеет что-то подобное.
основные типы данных C недостаточно.
вы можете сохранить его в массиве целых чисел. 64-разрядное целое число-это всего лишь 2 32-разрядных целых числа. 1024-разрядное целое число также можно рассматривать как 32 32-разрядных целых числа.