高精度计算

✍ dations ◷ 2025-11-15 00:34: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++:

相关

  • 反精神病学人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学反精神病学(Anti-psychiatry)是反对现代
  • 旭日旗旭日旗(日语:旭日旗/きょくじつき Kyokujitsu-ki)是带有红日和旭日光芒图案的一种旗帜,是日本军所采用的军旗。原日本海军旭日旗现在依然用于日本海上自卫队。旭日旗今日有着政
  • 德国牧羊犬德国牧羊犬(德语:Deutscher Schäferhund;英语:German Shepherd),是狗的一个品种,1977年才正式确定命名为德国牧羊犬,故各地命名迥异,中文语境下常称为德国狼犬或德国狼狗。德国牧羊
  • 尼可拉斯·劳伦斯·伯曼尼可拉斯·劳伦斯·伯曼(Nicolaas Laurens Burman, 1734–1793)是一名荷兰植物学家,为约翰纳斯·伯曼(Johannes Burman)之子。他继承了父亲于Athenaeum Illustre以及霍特斯植物园
  • 伊丽莎白·斯莱登伊丽莎白·克拉拉·希思-斯莱登(英语:Elisabeth Clara Heath-Sladen,1946年2月1日-2011年4月19日)是一位英国演员,最知名于在英国科幻电视剧《神秘博士》中饰演Sarah Jane Smith一
  • 毛诗毛诗是西汉时期鲁国人毛亨、毛苌学派的《诗经》。为当时的乐官所采集而成,各篇作者大都已不可考。汉代《诗经》学分为四家,为《齐诗》、《鲁诗》、《韩诗》、《毛诗》四家。后
  • 白泉民白泉民(1955年7月-),男,汉族,山西左权人,中华人民共和国政治人物,曾任山东省高级人民法院院长,第十二届全国人民代表大会山东地区代表。毕业于西南政法学院政法专业。1976年加入中国
  • !HERO《!HERO》(直译“!英雄”)是一部有关耶稣的摇滚歌剧(英语:en:rock opera)。这部歌剧基于“如果耶稣出生在宾夕法尼亚州伯利恒将会怎样?”这个问题。2003年首次巡演后,《!HERO》也通过DVD和CD发行。此歌剧也被写成一部小说三部曲和一系列漫画。《!HERO》是一部将圣经中耶稣最后两年生活现代化的摇滚歌剧。故事主要设定在纽约市布鲁克林区。在不久的将来,反乌托邦地球被一个叫做国际联合会(International Confederation of Nations,ICON)的世界政府统治。
  • 爱尔兰早餐茶爱尔兰早餐茶(英语:Irish Breakfast tea),以阿萨姆红茶作为基础茶,再加入一些肯尼亚、斯里兰卡或印度尼西亚产的红茶拼配而成,适合加入牛奶或糖饮用。
  • 李蒿楠李蒿楠(1981年8月1日-),中国男子短道速滑运动员,籍贯为吉林长春。李蒿楠是中国其中一位受器重的短道速滑运动员,他于2003年的世界锦标赛合拍隋宝库与李野等人取得男子5000米接力赛的季军。其后在短道速滑世界杯的加拿大以及韩国分站两度赢得接力赛的冠军,另在的美国分站就得到一个的亚军。翌年的十运会中,李蒿楠分别在男子个人500米、5000米接力小项取得银牌,另外的全能小项排名第5位。而在新一季的世界杯中,李蒿楠在韩国站中参与的男子个人500米夺冠,接力赛取得亚军,并且于杭州站的接力赛得亚军、500米殿军