高精度计算

✍ dations ◷ 2025-11-25 01:05:23 #高精度计算

高精度计算是一种程序设计的算法。由于中央处理器的字长限制,如32位CPU中一个整数最大只能取值4,294,967,295(=232-1)。因此在进行更大范围的数值计算中,往往要采取模拟手段。通常通过分离字符的方法通过数字数组进行输入、通过数组倒序输出、通过模拟竖式计算进行计算。一般而言,主要模拟的是按位运算,可以用不同的进位制达成不同的目的。

有许多程序库支持高精度计算,最著名的是GNU多重精度运算库。另外,Java,Python和Pascal也有本地的高精度运算支持。

高精度计算的一个常见应用是公开密钥加密,这些算法经常对长度上百位的整数进行运算。高精度计算的另一个应用是在需要没有人为限制位数和没有算术溢出的情况下使用。在检查固定精度计算的结果以及确定公式中系数的精确值或近似值时,高精度计算也很有用。比如,在高斯求积中,我们需要确定 1 / 3 {displaystyle {sqrt {1/3}}} 的值。

高精度加法是信息学的一种重要算法。这种算法使用多个存储单位进行计算,因此它的计算范围超过一般使用一个存储单位的算法。也是一些信息学竞赛的常考题目。

以358934760892734899+38960302975237462为例:

1、计算结果的位数

358934760892734899共18位

38960302975237462 共17位

故结果不会超过19位。

2、将要计算的数字分割成多段,按照顺序排列(这里以0-32767作为每一存储单位存储的数的限制):

(为提高空间利用效率,可以一个存储单位存储多位数。)

3、将两数相加。

4、输出结果。

从高位到低位依次输出。除最高位以外,其他低位上不足4位的要在前面补上0。

pascal:

var  a,b,c:array of integer;   n:string;   lena,lenb,lenc,i,x:integer; begin  readln(n);   lena:=length(n);   for i:=1 to lena do a:=ord(n)-ord('0');   readln(n);   lenb:=length(n);   for i:=1 to lenb do b:=ord(n)-ord('0');   i:=1; x:=0;   while (i<=lena) or(i<=lenb) do  begin    c:=a+b+x;     x := c div 10;      c := c mod 10;      i := i + 1;   end;   if x>0 then  begin    lenc:=i;     c:=x;   end  else lenc:=i-1;   for i:=lenc downto 1 do write(c); end.

c++:

相关

  • 使者古罗马政府与政治 系列条目罗马共和国前509年–前27年 罗马帝国前27年–1453年元首制西罗马帝国君主制东罗马帝国王政时代宪政(英语:Constitution of the Roman Kingdom) 共和
  • 锡安广场锡安广场(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taamey
  • 薛贞植薛贞植(설정식,1912年-1953年),朝鲜文学家和政治家,也是国内派人,韩战期间曾担当朝鲜人民军前线司令部文化官。1953年因间谍罪被处死。薛贞植出生于咸镜南道端川市,父亲曾在大韩帝
  • 太焦铁路.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none
  • 心岱心岱(1949年12月15日-),本名李碧慧,彰化鹿港人,台湾作家、记者、出版编辑。亦为爱猫族联谊会创始人及会长。出生于彰化县鹿港镇,为家中幺女。1967年至台北市就学。1976年开始从事报
  • 走钢丝的人《走钢丝的人》(英语:Man on Wire)是2008年英国纪录片,导演詹姆斯·马什,主演菲利普·珀蒂。1974年8月7日,法国杂技名人菲利普·珀蒂完成了举世壮举,他走钢丝跨过了美国纽约世贸大
  • 博登莱讷河坐标:47°26′39″N 11°06′38″E / 47.44414°N 11.11065°E / 47.44414; 11.11065博登莱讷河(德语:Bodenlaine),是德国的河流,位于该国东南部,由巴伐利亚负责管辖,属于帕尔特纳赫
  • 锦户亮锦户亮(日语:錦戸 亮/にしきど りょう ,1984年11月3日-),日本男歌手、男演员。原杰尼斯事务所旗下“关西杰尼斯8”、NEWS偶像团体前成员。虽然不是左撇子,但由于右手有三处都曾骨折过,因此左手也相当灵活。也因为右手有三处骨折过,因此右手弯曲时无法碰到右边的肩膀。自称很喜欢看书且好奇心旺盛,但在《TOKIOカケル》节目中自己申报一年最多只看两本书。父亲为熊本县出身,母亲则为鹿儿岛县出身。在兵库县尼崎市出生,成长则是在大阪府门真市,有两个哥哥,一个妹妹。关8团员涩谷昴曾经在节目中提到锦户亮和他的妈妈
  • 伊利耶·齐奥塞斯库伊利耶·齐奥塞斯库(罗马尼亚语:Ilie Ceauşescu;1926年6月8日-2002年10月1日),罗马尼亚共产党中央政治执行委员会委员,曾任国防部副部长,是尼古拉·齐奥塞斯库的三弟。1926年,出生于罗马尼亚奥尔特县斯科尔尼切什蒂的农民家庭。1946年,入团、入党,在斯科尔尼切什蒂区党委宣传鼓动部工作。1947年,在斯科尔尼切什蒂消费合作社当收银员。1950年,在罗马尼亚红十字会工作。1952年,保送第三军事政治学校学习。1953年,授中尉军衔,任第三军政学校图书馆馆长。1954年,任“斯特凡大公
  • 刘俐杉刘俐杉(英语:Chantal Liew Li-Shan,1998年8月9日-)是新加坡国家队公开水域游泳运动员。刘俐杉自小梦想参加东运会,10岁便开始参加游泳比赛,16岁进入新加坡国家队。2017年,刘俐杉在吉隆坡举行的女子10公里公开水域游泳比赛中以个人最佳成绩2:21:30获得东运会银牌,成为首位在该项目中获得奖牌的新加坡女子。她原本是该场比赛的季军,后因亚军药检不过关被褫夺银牌而获得升级。她在葡萄牙举办的2021年国际泳联塞图巴尔奥运资格赛的10公里比赛中获得第29名后获得了2020年东京奥运的参赛