• 高精度数的基本表示方法


    高精度数的储存形式

    1.使用字符串

      字符串是由一个一个的字符连接而成的,每个字符可以用于保存一个数位单元。可以把一个数字作为字符存放在字符串中,也可以把数字转换成ASCII码来保存。由于美意字符的最大ASCII码的值是255,因此可以使用256进制来保存数据。例如,把十进制456789变成一个字符串:(456789)10 = (6,248,85)256 = chr(6)&chr(248)&chr(85)

    若把数字作为字符串来保存,则在计算时需要进行字符与数值转换。使用这种方法的好处是能解决小数点的表示问题

    2.使用数组

      如同字符串一样,若使用数组来储存超高精度的书,每个数组单元可以作为一个储存单元,并采用进位制的形式来构成一个超高精度数的储存空间。根据数据类型的不同,如单进度、双精度,进位制的技术可以设置不同。在限定的条件下,可以根据需要设计出具体的进位制

    3.使用链表

      这种储存方法与使用数组一样,所不同是使用链表。这种方法的好处是,每个链表可以储存更多的信息,并且可以使用链表的前后指针索引相邻数据。

    超高精度书包括整型和浮点型

      对于长整数,计算相对较简单,因为没有小数点的问题。对它的储存,只需要把数字按照一定的方式保存到字符串、数组或链表中即可。

      对于超高精度的浮点数,可以把它分解成整数和小数部分,分别进行计算。在计算时,使用不同的数组分别存放浮点数的各个部分。

    数字存放顺序

      在计算机系统中,有两种数据存放格式,即大端和小端格式。同样在超高精度的计算程序设计时,需要选择一种顺序来存放数据。按照通常习惯,把数的高位放在左边,低位放在右边,亦即低位数在前,高位数在后。因此若使用数组存放超高精度的数,一般使用小索引号的数组单元放置低位数字,大索引号的数组单元放置高位数字。

    数的进制设置

      使用10的n次方(n为一个正整数),可以把长整数进行分组形成1个数向量,每组数字的个数为n。例如,601105002456789可分解成如下的每组为n=6的整数向量:

    456789

    105112

         601

    将这个数记作A,654321记作B,则AxB = C

        A      B      C

    0         +456789*654321 = 298886 635269       →      635269

    298886+105112*654321 = 68777 287838   →  287838

    68777  +601    *654321 =   393 315968    →  315968

    393      +0   *654321 =   393                        →  393

    结果即393315968287838635269

  • 相关阅读:
    连Action Bar都不会 你能说你学过 Android?
    Java设计模式 —— 单例模式
    删库跑路 + 比特币勒索?我的MySQL被黑客攻破了
    微信小程序 带参二维码 纯Java实现
    【个人简介】关于博主&阅读指南
    微信小程序 获取 手机验证码 短信验证码 后端功能实现解析
    Handler processing failed; nested exception is java.lang.NoSuchMethodError:
    腾讯云服务器备案全流程 40天备案的血与泪
    [总结]2020年2月 OI学习/刷题记录
    [Luogu P5680][GZOI2017]共享单车
  • 原文地址:https://www.cnblogs.com/Daywei/p/2381630.html
Copyright © 2020-2023  润新知