Int128 in .Net?
我需要做一些大的整数math。 是否有任何类或结构代表一个128位的整数,并实现所有通常的操作符?
顺便说一句,我意识到,十进制可以用来表示一个96位整数。
它在System.Numerics中 。 “BigIntegertypes是一个不可变的types,它表示一个理论值没有上限或下限的任意大的整数。”
var i = System.Numerics.BigInteger.Parse("10000000000000000000000000000000");
不,.NET中没有任何东西<= 3.5。 我希望/期待BigInteger将在.NET 4.0中返回。 (这是从.NET 3.5中删除的 。)
虽然BigInteger
是大多数应用程序的最佳解决scheme,但如果您有性能关键的数值计算,则可以在我的Dirichlet.Numerics库中使用完整的Int128
和UInt128
实现。 如果Int64
和UInt64
太小,但BigInteger
太慢,这些types是有用的。
如果您不介意引用J#库(默认情况下包含VS的vjslib.dll),那么已经有了.NET中BigInteger的实现
using java.math; public static void Main(){ BigInteger biggy = new BigInteger(....) }
C#PCL库,用于计算大数字,如Int128和Int256。 https://github.com/inTagger/BigMath
BigInteger现在是C#和.NET 4.0中的朋友的标准部分。 请参阅: Gunnar Peipman的ASP.NET博客 。 请注意,BigInteger不支持通常的操作符。 每个运算符都是一个方法调用。 看到这里 。
此外,BigInteger将比long
或int
慢,因为它实现了任意的精度算术,比使用两个64位寄存器的简单类增加了更多的开销。 它的好处是只受记忆和耐心的限制,最终是用uint来计算比特的实现的限制。
这是一个来自.net事务的大整数的实现。
我相信单声道有一个BigInteger实现,你应该能够追踪源。
有一个BigInteger类被定义为你可以使用的IronPython的一部分。
以下是.NET中的Int128实现: https ://int128.codeplex.com/