高精度计算

✍ dations ◷ 2025-11-27 10:39:20 #高精度计算

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

相关

  • CrO一氧化铬的化学式为CrO, 又称氧化亚铬或氧化铬(II)。它是一种黑色粉末,有着氯化钠晶型。 次磷酸及其盐能将三氧化二铬还原为一氧化铬:一氧化铬在空气中迅速被氧化。一氧化铬也
  • 1,5-二氨基四唑1,5-二氨基四唑是一种有机化合物,可以二氨基胍盐酸盐为原料制备。1,5-二氨基四唑是一种配位能力较强的多齿配体,可以和金属形成配合物,如:它也可以和强酸反应并成盐,如盐酸盐、高
  • 中国矿业大学出版社中国矿业大学出版社是中华人民共和国的一家出版社,成立于1985年,社址位于江苏省徐州市,由中华人民共和国教育部主管、中国矿业大学主办。
  • 沃尔夫艺术奖沃尔夫艺术奖(Wolf Prize in Arts)是以色列沃尔夫基金会每年一次(虽然有些年度并无获奖者)授予杰出艺术界人士的一个奖项,是沃尔夫奖六个奖项之一,自1981年以来开始颁发。沃尔夫艺
  • 尼尔斯·拉森尼尔斯·拉森(挪威语:Nils Larsen,1900年6月19日-1976年9月29日)是名挪威籍船长,曾参与挪威南极洲探险队。他是一位著名的捕鲸者,主要为桑讷菲尤尔Thor Dahl A/S数艘捕鲸船担任船长
  • 不穿内裤未穿内裤、免着内裤(英语:going commando)为一服装穿着上的俚语,用来通称下半身无需一般内衣物的状态(对男性称free-balling,对女性则称free-buffing)。有些特定款式的服装,如单车短
  • 安德里昂四重奏安德里昂四重奏(英语:Endellion Quartet)是一个英国的弦乐四重奏团体。他们创立于1979年,团名是按康瓦尔郡的圣安德里昂村命名的。四重奏自1992年开始(迄今)常驻于剑桥大学,担任该
  • 小叶月桂小叶月桂(学名:)为木犀科木犀属下的一个种。
  • 英国国家公园英国国家公园是英国国会据《国家公园和土地使用法案》建立的国家公园,名义上共有14个,但布罗兹湿地国家公园也享有同等待遇。英国的国家公园其实并非完全的保护区,其中有相当一部分包括了人类的城镇,并非IUCN所定义的“国家公园”。英格兰有10个国家公园,威尔士有三个,苏格兰有两个。据《1995年环境法》(Environment Act 1995),英国国家公园建立了自己的主管机构,只有湖区和峰区由当地郡议会管理。所有坐标的地图 - OSM所有坐标的地图 - Google所有上至200个坐标的地图 - Bing
  • 格奥尔格·阿尔贝特 (施瓦茨堡-鲁多尔施塔特)格奥尔格·阿尔贝特(德语:Georg Albert,1838年11月23日—1890年1月19日),施瓦茨堡-鲁多尔施塔特亲王,1869年至1890年在位。格奥尔格·阿尔贝特终生未婚;因此当他去世时,由他的堂弟、同为腓特烈·卡尔曾孙的金特·维克多继位。