c# .net int128

c# - Int128 en.Net?



(10)

Necesito hacer algunas matemáticas enteras grandes. ¿Hay alguna clase o estructura que represente un número entero de 128 bits e implemente todos los operadores habituales?

Por cierto, me doy cuenta de que el decimal se puede usar para representar un int de 96 bits.





BigInteger ahora es una parte estándar de C # y amigos en .NET 4.0. Ver: el blog ASP.NET de Gunnar Peipman . Tenga en cuenta que BigInteger no es compatible con los operadores habituales. Cada operador es una llamada a un método. Mira aquí .

Además, BigInteger será más lento que long o int porque implementa una aritmética de precisión arbitraria, que agrega más sobrecarga que una clase más simple que usa dos registros de 64 bits. Tiene el beneficio de estar limitado solo por la memoria y la paciencia, y eventualmente por los límites de la implementación que usa un uint para contar bits.


Creo que Mono tiene una implementación de BigInteger para la que debería poder rastrear la fuente.


Hay una clase BigInteger definida como parte de IronPython que puedes usar.



Si bien BigInteger es la mejor solución para la mayoría de las aplicaciones, si tiene cálculos numéricos críticos para el rendimiento, puede usar las Int128 completas de Int128 y UInt128 en mi biblioteca Dirichlet.Numerics . Estos tipos son útiles si Int64 y UInt64 son demasiado pequeños, pero BigInteger es demasiado lento.


Si no le importa hacer referencia a la biblioteca J # (vjslib.dll incluida con VS de forma predeterminada) ya existe una implementación de BigInteger en .NET

using java.math; public static void Main(){ BigInteger biggy = new BigInteger(....) }


Está aquí en System.Numerics . "El tipo BigInteger es un tipo inmutable que representa un entero arbitrariamente grande cuyo valor en teoría no tiene límites superiores o inferiores".

var i = System.Numerics.BigInteger.Parse("10000000000000000000000000000000");