¿Puede C (lenguaje de programación) tratar con grandes números?

Mirando su comentario, sus “grandes números” se encuentran dentro de enteros de 64 bits sin signo. El rango almacenable para 64 bits sin signo es de 0 a 18,446,744,073,709,551,615. Por supuesto, esto supone que está utilizando una arquitectura de SO y CPU que puede manejar enteros de 64 bits internamente. Si está usando algo mucho más antiguo, entonces puede ser más limitado.

Si creces más que eso, querrás buscar una biblioteca para manejar * realmente * números grandes. Por lo general, funcionan con la representación de cadena de los números en lugar de la representación binaria de los números y la matemática de esos números será mucho, mucho más lenta que la matemática de los valores que la arquitectura de la CPU admite de forma nativa. Hay muchas de estas bibliotecas por ahí, y pueden proporcionar diferencias muy amplias en los operadores que puede usar en sus grandes números, por lo que sin saber qué problema está tratando de resolver, no podría comenzar a ofrecerle consejos sobre una biblioteca específica.

Una cosa que me confunde acerca de su comentario es que no tengo idea de qué es un número “+ ve” o “-ve”. Busqué en Google y encontré estos términos usados, pero no pude encontrarlos definidos. Pensé que tal vez eran números con un exponente definido (como 4.134e-4) pero sus ejemplos no muestran ningún exponente, por lo que no sé lo que esto significa.

Actualización: Varios han dicho que + ve y -ve son solo formas flojas de escribir positivo y negativo. No me voy a molestar en actualizar mi respuesta, ya que creo que todavía está claro. El OP tendría que ser más específico acerca de su definición de qué rango de números necesitaban manejar para ser realmente específicos.

¿Qué tan grande de número necesitas? Otras respuestas han mencionado los tipos de datos integrados que son suficientes para la mayoría de las necesidades. Pero digamos por alguna razón, necesita un número mayor que 64 bits pueden representar. Puede rodar el suyo con una estructura de datos (como una matriz) que contiene tantos bytes como sea necesario. Como no es un tipo integrado, deberá escribir un conjunto de funciones que manejen las operaciones que le interesan: suma, resta, multiplicación, división, etc. De hecho, parece que alguien más lo escribió:

Echa un vistazo a https://gmplib.org . ¿Puede manejar el tipo de números que necesita?

ETA: Acabo de notar tus detalles. mucho tiempo habría hecho el truco dados sus datos. No es necesario sacar las armas grandes.

C puede “lidiar” con números tan grandes como te puedas imaginar. Sin una pérdida de precisión, puede manejar de forma nativa hasta 2 ^ 64 en una máquina moderna y si está preparado para renunciar a algo de precisión, puede ir MUCHO más alto usando exponentes, o puede usar bibliotecas para aumentar el rango.

Sin embargo, mirando su descripción, no creo que este sea su problema. El problema con el que puede encontrarse es la diferencia entre enteros con y sin signo. El tipo incorporado ‘int’ está firmado y almacenado como un valor de complemento a 2, lo que significa que el valor asociado con el MSB es negativo.

Por ejemplo, si tiene una palabra binaria clásica de 4 bits, los valores de los bits son 8,4,2 y 1, así:

8 4 2 1
0 0 0 0

para almacenar el valor 7:

8 4 2 1
0 1 1 1

Sin embargo, esto no da forma de almacenar un número negativo. En el complemento a 2, el signo del MSB se voltea para que las columnas ahora representen (-8), 4, 2 y 1

Todavía 7 se ve así:

-8 4 2 1
0 1 1 1

Sin embargo, si agregamos 1 a este valor, terminamos con

-8 4 2 1
1 0 0 0

¡Lo cual es igual a -8, no a 8!

Esto se conoce como “envoltura”. Si los números con los que está lidiando también lo son, puede intentar usar “unsigned int” o “float”.

Codificación feliz

More Interesting

¿Qué es una explicación intuitiva del cifrado homomórfico?

¿Qué es un algoritmo para convertir de una matriz de adyacencia a listas de adyacencia?

Cómo resolver el problema P versus NP

¿Cuál es el significado del XOR Lemma de Yao?

¿Cuál es el papel de las matemáticas en la programación de computadoras?

¿El aumento del nivel de las competiciones de matemáticas ha resultado en un aumento de las capacidades en las ciencias del mundo real?

¿Por qué la informática teórica es tan seca en los trabajos, a excepción de la academia? Aunque todas las empresas se enfrentan a desafíos, no hay una guerra muy reñida contra problemas difíciles, y las personas tienden a elegir la forma fácil de resolver cada problema.

Si el universo es una simulación, ¿no estaría sujeto al problema de detención?

Cómo formular un programa entero donde todos estén representados en un horario

No quiero usar las bibliotecas de Python. Quiero hacer los cálculos y escribir el código yo mismo. ¿Qué libros explican las matemáticas y entra en detalles?

¿Cómo podemos convertir una imagen en un sistema binario (0 y 1) o un código como QR?

¿Cuándo espera que se resuelva P vs. NP?

¿Cómo se relacionan los cierres del lenguaje de programación con el cierre en matemáticas?

Proyectos teóricos de informática o desarrollo de aplicaciones, ¿qué le sugerirías a los estudiantes de primer año de informática?

Mi computadora portátil está enchufada pero no se carga. ¿Cómo soluciono este problema?