zoukankan      html  css  js  c++  java
  • 浮点数的表示范围计算

    对于C语言来说,其浮点数类型是以下两种表示:

    类型 占用存储空间 表述范围
    float 4字节 -3.403E38~3.403E38
    double 8字节 -1.798E308~1.798E308

    其浮点数各自表述范围的计算,看一下各个位的定义就行。32位的浮点数是1位符号位+8位指数位+23位底数位

    最大最小值的话对应都是绝对值最大的情况。8位指数位里255被保留,最大只能取到254,移码的偏移量是+127,也就是说254表示的是2127。23位底数位全是1的话,是二进制的1.111…111(小数点后23个1),也就是“1后面24个0”减去1再右移23位。

    那么这个最大的绝对值对应的就是((((1 << 24) - 1) << 127) >> 23) = ((1 << 24) - 1) << 104

    In[1]:= (224 - 1) x 2104

    out[1]:= 3.40282 x 1038 

    同理:64位的浮点数是1位符号位+11位指数位+52位底数位,11位指数位里2047被保留,最大只能取到2046,移码的偏移量是+1023,也就是说2046表示的是21023。52位底数位全是1的话,是二进制的1.111…111(小数点后52个1),也就是“1后面53个0”减去1再右移52位。

    那么这个最大的绝对值对应的就是((((1 << 53) -1) << 1023) >> 52) = ((1 << 53) - 1) << 971

    In[1]:= (253 - 1) x 2971

    out[1]:= 1.79769 x 10308

  • 相关阅读:
    box-sizing
    max-width
    如何编写高质量CSS
    CSS文字大小单位PX、EM、PT
    jQuery设计思想
    pageX,clientX,offsetX,layerX的那些事
    html块级元素和内联元素区别详解
    centos彻底删除mysql
    删:[CentOS 7] 安装nginx
    CentOS7.0安装与配置Tomcat-7
  • 原文地址:https://www.cnblogs.com/huixinquan/p/15317010.html
Copyright © 2011-2022 走看看