zoukankan      html  css  js  c++  java
  • 高精度数的基本表示方法

    高精度数的储存形式

    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

  • 相关阅读:
    hdu acm 2844 Coins 解题报告
    hdu 1963 Investment 解题报告
    codeforces 454B. Little Pony and Sort by Shift 解题报告
    广大暑假训练1 E题 Paid Roads(poj 3411) 解题报告
    hdu acm 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
    hdu acm 1114 Piggy-Bank 解题报告
    poj 2531 Network Saboteur 解题报告
    数据库范式
    ngnix 配置CI框架 与 CI的简单使用
    Vundle的安装
  • 原文地址:https://www.cnblogs.com/Daywei/p/2381630.html
Copyright © 2011-2022 走看看