zoukankan      html  css  js  c++  java
  • 浮点类型

        在C++中,小数用浮点类型来表示。浮点类型主要有3种,float、double、long double,它们主要的差别是数据的表示范围不同。C++标准指定了一个浮点数有效位数的最小值,然而大多数编译器都实现了更高的精度。通常,float用32位来表示,double用64位来表示,long double的长度根据编译器的不同而不同,通常是8字节,12字节,16字节。

        在计算机中,虽然它们的长度不同,但是它们的存储原理相同,只是指数部分和尾数部分的长度不同。

        下面,我们以float为例,来讲解一下IEEE的存储原理。

       

    图1 float的IEEE存储格式

        如图1所示,float在内存中占用4个字节,其中符号占用1位,正号用0表示,负号用1表示。指数部分用8位来表示,尾数部分用23位来表示。为了方便大家理解,下面,我们一起来转换一个小数为IEEE的存储格式。

    例1 将float类型的8.25转换为IEEE存储格式

    解:

        1、转换8.25为二进制:1000.01。

        2、移动小数点,使小数点前的整数部分为1,1000.01表示为1.00001 * 2^3。

        3、根据第2步的结果填充内存:

        a )因为是正数,所以符号位为0。

        b )将指数部分加127,所以指数部分为3+127=130,转换为二进制为10000010。

        c )去掉最左边的1,将剩余的00001扩展至23位,即00001000000000000000000。

        4、最终结果为:0 10000010 00001000000000000000000,转换为16进制为:0x41 0x04 0x00 0x00,按照小端存放:0x00 0x00 0x04 0x41。

    测试代码如下:

    #include <stdlib.h>
    #include <stdio.h>
    void main()
    {
    	float f = 8.25;	
    	system("pause");
    	return;
    }
    测试结果如图2所示:

    图2 测试结果图

        如图2所示,我们的推断结果与事实相符。

        今天,我们主要讲了浮点类型的种类,以及float的IEEE存储方式。double与float类似,只是指数部分不是8位,而是11位,尾数是52位,总位数64位。希望大家回去多实践,加深对float存储格式的理解。

  • 相关阅读:
    RPC的入门
    Https的实现原理
    Celery
    Flask信号
    Redis安装
    python之递归
    python之三元表达式和生成式
    python第十八天作业
    python之生成器
    python之迭代器
  • 原文地址:https://www.cnblogs.com/new0801/p/6176946.html
Copyright © 2011-2022 走看看