高精度计算

✍ dations ◷ 2025-12-10 06:37:02 #高精度计算

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

相关

  • 黑素瘤黑色素瘤,又称恶性黑色素瘤,是一种从黑色素细胞发展而来的癌症,是皮肤癌中罕见的癌症。好发于皮肤但也可能出现在口腔、肠道或眼睛中。女性患者的黑色素瘤最常出现在腿,而男性患
  • 单层立方上皮单层立方上皮为单层扁平上皮及单层柱状上皮的中间型。由单层立方上皮细胞所构成。高立方状与低柱状之间的差别通常是主观的,且只有描述上的价値而已。在以对基底膜做垂直方向
  • 宝莱坞票房纪录印度最高电影票房是包括所有印度语言的印度电影在全球的保守估计票房纪录列表,此乃根据信誉良好消息来源的报导。印度官方并无统计电影在印度本土的票房数字(英语:List of high
  • 兰利 (单位)兰利(langley,缩写为Ly),是测量太阳辐射强度的国际通用计量单位,1947年设立,为纪念美国物理学家塞缪尔·兰利而得名。1兰利=1卡路里/1平方厘米,如果换算为国际单位制中的“焦耳/平
  • 博尼费 (佛罗里达州)博尼费(英语:Bonifay),是美国佛罗里达州下属的一座城市。建立于1886年。面积约 为9.4平方公里(约合3.6平方英里)。根据2010年美国人口普查,该市有人口2,793人。论人口在本州排行第
  • 顾家相顾家相(1853年-1917年),浙江会稽人,清末官员,史学家、金石学家。光绪二年丙子年(1876年)进士。清末,在江苏、河南、江西做过官,官至知县、知府。清光绪二十五年(1899年),时任萍乡县令的顾
  • 吴思贤球员教练吴思贤(1963年7月2日-),台湾的棒球选手之一,现为安永鲜物棒球队的总教练。1980年 -- 第十三届罗德岱堡青棒赛中华青棒代表队1981年 -- 第十四届罗德岱堡青棒赛中华青棒代
  • 安多尼·沙德·费尔南德斯安多尼·沙德·费尔南德斯(英语:Anthony Soter Fernandez;1936年8月24日-)是马来西亚籍天主教司铎级枢机、首位马来西亚枢机和吉隆坡总教区荣休总主教。费尔南德斯于1936年8月24
  • 法兰西学术院院士列表本列表按席位编号列出了历任法兰西学术院院士。学术院由四十位院士组成,为终身制。在一位院士去世后,由其他院士补选产生新任院士填补其空缺。列表中人名后的日期为其院士任期
  • 杜木兹杜木兹(Dumuzi)或杜姆齐德(Dumuzid),被称为“牧人神”,产生于苏美尔巴德·提比拉城 ,根据苏美尔国王谱系,他是大洪水前的传奇时期第五王朝的一位国王。这谱系表还指出,杜木兹统治了36000年。“牧人神杜木兹”也是苏美尔文学中系列史诗的主题。但他也出现在一些描述乌鲁克国王的碑牌中,国王列表中显示他的称号是“渔夫杜木兹德 ”- 一个传说在洪水过后的某个时期(介于“牧人神”卢伽尔班达(英语:Lugalbanda)和吉尔伽美什之间)曾进行过统治的独特人物。涉及牧人神杜木兹的神话情节有:其他传说后期赞美