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

  • 相关阅读:
    XML中<beans>中属性概述
    (转)深入理解Java:注解(Annotation)自定义注解入门
    maven 配置参数详解!
    maven setting.xml文件配置详情
    hashMap与 hashTable , ArrayList与linkedList 的区别(详细)
    jdbc参数
    linux下ftp命令的安装与使用
    java中的Iterator与增强for循环的效率比较
    命令行窗口常用的一些小技巧
    在eclispe的类中快速打出main方法
  • 原文地址:https://www.cnblogs.com/Daywei/p/2381630.html
Copyright © 2011-2022 走看看