.NET 4.0现在有一个新的数据类型System.Numeric.BigInteger。根据我的理解,这可以容纳最多100万位的数字。可以对此数字执行简单的算术运算。我想知道微软是如何实现这样的,因为它显然会超过32位甚至64位。这怎么没有溢出?
答案 0 :(得分:5)
已经对超过本机整数(和浮点)大小的结构执行了算术运算很长一段时间。这通常通过将较大结构(例如,添加)上的单个概念算术运算转换为对多个本机类型的一系列操作来完成。
答案 1 :(得分:3)
BigInteger使用Arbitrary Precision Mathematics。
在计算机科学中,任意精度算术是一种对精度数字仅受主机系统可用内存限制的数字进行计算的技术。
仅在需要使用非常大的数字时才使用它:
任意精度用于算术速度不是限制因素的应用,或需要非常大数量的精确结果的应用。
答案 2 :(得分:2)
在内部,BigInteger类型实现为无符号整数数组(c#中的uint32 [])和另一个指定符号的字段。
数组使类型能够存储如此大的数字,方法和操作符隐藏了处理复杂结构的细节,使其易于使用。
答案 3 :(得分:1)
与数字0-9的算术完全相同。当你改变二十岁的时候,你不必借用别人的手指。大整数类使用32位或64位整数,就像使用数字一样。这有点过于简单,特别是当数字变大时
答案 4 :(得分:1)