高精度计算

✍ dations ◷ 2025-11-26 14:25:44 #高精度计算

高精度计算是一种程序设计的算法。由于中央处理器的字长限制,如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++:

相关

  • 人体解剖学人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学人体解剖学(英语:anthropotomy或human a
  • 视频聊天视频对话(英语:videotelephony)简称视聊,又称电视对话、电视电话对话,是一种为两地或多地的用户之间提供语音和画面双向实时传送的视听会话技术。大型视频对话系统在现代的军事、
  • 邦/中央直辖区印度的一级行政区包括有28个邦、8个中央直辖区及德里国家首都辖区。28个邦每一个邦都有各自的民选政府,首都辖区与邦处相同的地位,而中央直辖区则由中央政府直接管辖。今日的
  • 茭白笋茭白(学名:Zizania latifolia),又名茭白笋、加泽笋、葩白笋、菰、菰蒋、菰蒋草、美人腿、籧蔬‘尔雅’、菰菜、菰笋、茭笋、茭粑、茭瓜、高笋、茭首、茭草、茭耳菜、茭儿菜、古
  • 双言巧语双言巧语(doublespeak)是一种故意扭转或隐藏原意的修辞法,常为政治组织、军队、企业或公关宣传领域使用,有时候可以视为一种委婉或政治正确的表达方式,但在用于政治组织、军队或
  • 优斯普·克拉鲁斯优斯普·克拉鲁斯(英语:Josep "Pep" Clarós Canals,1969年1月28日-),生于西班牙巴塞罗那,篮球教练,目前是福冈新锐主教练。克拉鲁斯爱用人盯人防守(英语:Man-to-man defense)的全场紧
  • 彼得·斯特格彼得·斯特格(德语:Peter Stöger,1966年4月11日-)是一位奥地利前足球运动员及现任足球教练,曾执教于原位居于德乙的科隆,并成功带队升入德甲。在经历了法沃里滕(德语:Favoritner AC)
  • 李保国 (1961年12月)李保国(1961年-),男,陕西周至人,中国动物学家,西北大学生命科学学院教授,陕西省动物研究所所长。研究方向为灵长类行为生态、哺乳类动物生态、生物多样性保护等。1982年获得陕西师范大学生物系学士学位,1985年获得西北大学生物系动物学硕士学位。曾在京都大学、梅西大学做客座教授。2012年任西北大学生命科学学院院长。2009年至今任陕西省动物研究所所长,2015年至今任中国科学院西安分院副院长。担任《Current Zoology》编委、《动物学报》等杂志编委,中国动物学会等学会、协会理事,《中国西北地
  • 约翰·弗莱切约翰·弗莱切(英语:John Fletcher,1579年-1625年),文艺复兴时期欧洲英格兰剧作家。他曾与弗朗西斯·博蒙特合作写作了几十部剧作和喜剧作品。另外,他还与莎士比亚合作,共同创作了《亨利八世》和《两个贵族亲戚》等作品。
  • 赖雪芬赖雪芬,前亚洲电视配音员,1980年代入职亚洲电视配音组,现已退出配音行列。※粗体为主角或要角