高精度计算

✍ dations ◷ 2025-11-29 09:26:50 #高精度计算

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

相关

  • 22iR-羟基胆固醇22R-羟基胆固醇(英语:22R-Hydroxycholesterol)是一种内源性的胆固醇代谢中间产物,参与甾体激素的生物合成。 胆固醇被细胞色素P450家族的CYP11A1胆固醇侧链裂解酶(P450scc)羟基化
  • 网络中心战网络中心战(英语:Network-centric warfare,NCW),现多称网络中心行动(network-centric operations,NCO)是一种美国国防部所创的新军事指导原则,以求化信息优势为战争优势。其做法是用
  • 戴维森-革末实验戴维森-革末实验是克林顿·戴维森与雷斯特·革末设计与研究成功的一个量子力学实验。他们用低速电子入射于镍晶体,取得电子的衍射图案。发表于 1927 年,这实验为德布罗意假说(
  • 明珠明珠(满语:ᠮᡳᠩᠵᡠ,转写:mingju;1635年11月19日-1708年6月3日),叶赫那拉氏,字端范,清朝康熙时期重臣。满洲正黄旗人。明珠生于天聪九年十月初十(1635年11月19日),是叶赫贝勒金台吉之孙
  • 葡萄牙广播电视公司葡萄牙广播电视公司(葡萄牙语:Rádio e Televisão de Portugal;RTP)是葡萄牙的公共广播服务组织。它设有4个地面电视频道和三个国家电台频道,以及一些卫星和电缆产品。RTP是一个
  • 弗吉尼亚殖民地弗吉尼亚殖民地(英语:Colony of Virginia)是英国在北美大陆上设立的第一个殖民地,也是其在海外建立的第一个殖民地,于1607年由弗吉尼亚公司首建,于1624年经敕许获得英国政府承认,升
  • 波斯尼亚地区波斯尼亚(Bosnia)是位于波斯尼亚黑塞哥维那北部的历史与地理地区。主要位于狄那里克阿尔卑斯山脉,也就是潘诺尼亚平原的南部边界地带,萨瓦河与德里纳河分别标示著北部及东部边境
  • 列扎河坐标:59°16′54″N 40°13′10″E / 59.28167°N 40.21944°E / 59.28167; 40.21944列扎河(俄语:Лежа),是俄罗斯的河流,位于该国西北部沃洛格达州,属于苏霍纳河的右支流,流经格
  • 勇者王勇者王电视版之片头画面《勇者王GaoGaiGar》(日语:勇者王ガオガイガー)是1990年代机器人动画片系列“勇者系列”的第八部作品,也是勇者系列的完结篇。本作品于1997年至1998年在
  • 扎尔努拉·拉苏列夫扎尔努拉·拉苏列夫(巴什基尔语:Зәйнулла Рәсүлев;1833年3月25日-1917年2月2日),19世纪末20世纪初巴什基尔人出身的宗教领袖。他是俄国著名的扎吉德领袖,并且是第一