zoukankan      html  css  js  c++  java
  • float和double类型的存储方式

    Float double 类型在计算机的存储方式

             计算机中只认识10的二进制数,那么该如何存储小数呢?

             那么我们先看Floa类型:

    Float在计算机(32位)中是4个字节的,具体地:第一位为符号位0为正,1为负 第2到第9位为指数位,第10到32位为尾数位,具体地如下图所示:

    1

    2

     

     

     

     

     

     

    9

    10

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    32

    现在我们举个例子:

    8.25的二进制表示方法为:1000.01 =1.00001*23 ,指数为3,尾数为00001,那么它怎样在二进制中存储呢?

    首先看符号位为正,所以第一位为0,指数为3,要加上127=130,130的二进制数是1000 0010 填到第二到第九位中,最后的尾数部分就为0000 1 尾数后面的空余部分补0.

    0

    1

    0

    0

    0

    0

    0

    1

    0

    0

    0

    0

    0

    1

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    表示为十六进制就是41040000,那么究竟对不对呢?我们用程序跑一下就知道了:

     

    可以看到结果是正确的。

    同理double型也是同样的道理,只不过符号位是1位,指数位为11位,尾数位为52位,当计算指数时,要用指数加1023,然后转换成二进制。

    下面说下取值范围和精度:

    取值范围看指数部分:

    float是有符号型,其中,8位指数位,2^8=(-128—127),因此实际的范围是-2^128—2^127,约为-3.4E38—3.4E38

    同理double范围约是-1.7E308—1.7E308,

    精度是看尾数部分:

    float尾数位23位,2^23=8.3E6,7位,所以不同的编译器规定不同,有些是7位,有些8位

    double尾数52位,2^52=4.5E15,15位,所以double的有效位数是15位

  • 相关阅读:
    Asp.Net Web API 2第八课——Web API 2中的属性路由
    Asp.Net Web API 2第七课——Web API异常处理
    Asp.Net Web API 2第六课——Web API路由和动作选择
    Asp.Net Web API 2第五课——Web API路由
    开始学习python
    BMI 小程序 购物车
    深浅copy 文件操作
    字典 dict 集合set
    基本数据类型 (str,int,bool,tuple,)
    python 运算符
  • 原文地址:https://www.cnblogs.com/mu-tou-man/p/3915636.html
Copyright © 2011-2022 走看看