APP下载

128位大整数的设计与实现

2015-05-15黄明志

现代计算机 2015年7期
关键词:符号结构方法

黄明志

(仲恺农业工程学院信息科学与技术学院,广州 510225)

128位大整数的设计与实现

黄明志

(仲恺农业工程学院信息科学与技术学院,广州 510225)

某些应用程序可能需要使用比Int64更大的整数,但.NET Framework 3.5并没有提供相应的结构来存储和处理比64位整数更大的整数的结构,因此,设计大整数结构显得非常有必要。根据CLS规范,按照.NET Framework 3.5中基本数据类型的架构,阐述128位有符号大整数的设计与实现方法。

大整数;Int128;.NET Framework

0 引言

对于符号整数,微软在.NET Framework 3.5中仅能提供表示64位的结构类型,显然,这样的整数可能仍然会因为值范围过小而不能满足某类应用程序的设计要求。例如,在搜索引擎这类应用程序中,就需要一个比Int64更大的整数——有符号大整数Int128。Int128值类型能够表示值介于-170,141,183,460,469,231,731,687,303,715,884,105,728到+170,141,183,460,469,231,731,687,303,715,884,105,727之间的整数。

1 设计要求

首先,Int128结构的设计应最大限度地符合CLS(Common Language Specification);其次,为了使Int128结构更易于使用,其设计应以.NET Framework中的基本数据类型如Int32和Int64为范本,提供与Int32和Int64相同或相似的功能对大整数进行各种运算,并使用相同的属性名和方法名;第三,充分利用C#的运算符重载功能,分别实现+(Add)、-(Subtract)、*(Multiply)①注①★表示显式接口。、/(Divide)、%(Remainder)、++(Increment)、--(Decrement)、<<(LeftShift)、>>(RightShift)、&(BitwiseAnd)和|(BitwiseOr)等操作。

Int128结构的类图如图1所示。

图1 Int128结构的类图

2 实现

要让Int128符合CLS规范,首先需将“[assembly: CLS Compliant(true)]”标记放在Int128所在装配件的AssemblyInfo.cs中或Int128.cs文件中,然后将Int128结构标记上“[CLSCompliant(true)]”特性:

当然,在设计时需要确保Int128结构中公共方法的参数和返回类型也要符合CLS的要求。这样,可以在多种语言中让Int128通过其可用的功能来增强和确保语言的互用性。

2.1 数据的存储

为了方便地处理Int128结构所表示的数,笔者在其结构的内部使用了两个UInt64私有字段分别存储和表示Int128的高位和低位。如……

登录APP查看全文

猜你喜欢

符号结构方法
《形而上学》△卷的结构和位置
学符号,比多少
“+”“-”符号的由来
论结构
变符号
论《日出》的结构
用对方法才能瘦
四大方法 教你不再“坐以待病”!
捕鱼
图的有效符号边控制数