高精度计算

✍ dations ◷ 2025-12-11 11:45:37 #高精度计算

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

相关

  • 淡色藻门淡色藻门(学名:Ochrophyta)是不等鞭毛类的一大部分光合生物。它被分为两个亚门——Phaeista(包括Hypogyristea及Chrysista)和Khakista(包括Bolidomonas(英语:Bolidomonas)及硅藻纲)。
  • 北京麻将北京麻将是1990年代之后逐渐形成的北京地域性规则麻将。因大部分人参与性较强,难度虽然较低,但是说法及和牌方式多样化,被很多人喜爱。也被称之为“推倒和”,同时以和牌形式也被
  • 自传数自传数(英语:Autobiographical number)为满足以下定义,不超过10位数的自然数:……依此类推。例如1210第1至4位数分别为1、2、1和0,而此数字有1个0,2个1和1个2,恰好对应,因此1210为自
  • 阿尔泰山楂阿尔泰山楂(学名:)为蔷薇科山楂属下的一个种。
  • 真的有天堂 (电影)《真的有天堂》(英语:Heaven Is for Real)是一部由2010年同名畅销书改编的电影,该书籍取材自真实事件,兰道尔·华莱士执导,故事讲述一个走过天堂的孩子的真实故事。在加拿大温尼伯
  • 巴鲁奇巴鲁奇(Bharuch INA),是印度古吉拉特邦Bharuch县的一个城镇。总人口391(2001年)。该地2001年总人口391人,其中男性219人,女性172人;0—6岁人口52人,其中男30人,女22人;识字率71.61%,其中
  • 大公鼎大公鼎(1043年-1121年),辽朝官员,渤海人。先世为辽阳率宾县(治今俄罗斯乌苏里斯克)人,渤海国亡后被迁居辽阳(今辽宁辽阳市)。统和年间,迁移辽东豪右来充实东京,于是安家在大定府(今内蒙古
  • 萨莎·亚历山大萨莎·亚历山大(英语:Sasha Alexander;1973年5月17日-),生于加利福尼亚州洛杉矶,是美国女演员。1973年5月17日,萨莎·亚历山大出生在美国加利福尼亚州洛杉矶,具有塞尔维亚血统。她从七年级开始在学校参加演出,同时也是一名滑冰运动员,但因膝盖受伤而停赛。她在高中和大学期间一直在演戏,之后搬到纽约市参加夏季特别娱乐表演和威廉·莎士比亚节日。萨莎·亚历山大就读于南加州大学电影电视学院。2007年8月11日,萨莎·亚历山大在瑞士日内瓦和导演爱德华多·庞蒂(英语:Edoardo Ponti)
  • 潘蓓蕾潘蓓蕾(1941年-),祖籍台湾台北,出生于上海,高山族,中华人民共和国政治人物。九三学社社员。曾担任十一届全国政协常务委员、中国轻工业联合会副会长。2008年,当选第十一届全国政协常务委员,代表九三学社,分入第十二组。并担任经济委员会专委。
  • 荀彧.mw-parser-output ruby>rt,.mw-parser-output ruby>rtc{font-feature-settings:"ruby"1}.mw-parser-output ruby.large{font-size:250%}.mw-parser-output ruby.larger{font-size:300%}.mw-parser-output ruby.large>rt,.mw-parser-output ruby.large>rtc{font-size:.3em}.mw