zoukankan      html  css  js  c++  java
  • OJ之大数与高精度题必备知识

    浮点数的存储方式与高精度

    存储原理

    科学计数法
    IEEE 754

    待补充。。。

    高精度计算中的误差与规避技巧

    待补充。。。

    PI的高精度表示方法

    对精度要求较高的题目,一般PI的表示会需要高精度来确保结果的准确性。这时可以用 math.h 中的反三角函数来表示高精度的PI:

     PI = atan(1.0) * 4; 或 PI = acos(-1); 都可以达到目的。

    【注意:三角函数和反三角函数中的输入都是弧度,而非角度。】

    数据类型的表示范围

    整型

    在内存中,正数以原码的形式存储,负数以补码的形式存储。

    整型数据主要考察大数的计算、存储与表示。

     int_32 :最大20亿左右(即一个2,后面跟9个0);

     long 类型在不同的编译器中可能不一样,总体原则是不小于 int_32 ,所以一般大数容量不够时直接升级 long long ;

     long long :最大为一个9后面跟18个0

    所有类型的 unsigned 的话没有负数部分,最大值乘以2。

    浮点型

    与整型不同,浮点型数据在内存中的存储方式是科学计数法,所以在高精度计算中,如果参与计算的数据精度不够会导致计算结果有较大偏差。

    这里的精度,即小数点后的位数

     float :4字节,7位精度;

     double :8字节,15位精度;

     long double :10字节,19位精度;

    【有关数据类型之间的转换详见这篇:混合运算中不同数据类型之间的转换原则(C语言)

     关于内存限制1MB = 1024KB = 1048576Byte

    16位的平台 int 是16位的(16位操作系统),就是0x0000 ~ 0xFFFF, 一个 int 占2个字节,所以1MB内存可以有524288个 int_16 ;

    32位的平台 int 是32位的(32位及以上操作系统),就是0x00000000 ~ 0xFFFFFFFF,一个 int 占4个字节,所以1MB内存可以有262144个 int_32 ;

    以此类推。

    Min是清明的茗
  • 相关阅读:
    Best HTTP
    Unity3D游戏轻量级xlua热修复框架
    线段树
    7.1
    BZOJ 3011: [Usaco2012 Dec]Running Away From the Barn( dfs序 + 主席树 )
    BZOJ 3585: mex( 离线 + 线段树 )
    2015暑假集训
    BZOJ 3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛( dp )
    BZOJ 2693: jzptab( 莫比乌斯反演 )
    2015.7.31
  • 原文地址:https://www.cnblogs.com/MinPage/p/14187844.html
Copyright © 2011-2022 走看看