zoukankan      html  css  js  c++  java
  • float在内存中的存放

    一个float型实数在内存中占4个字节,即32个二进制bit,从低位到高位依次叫第0位到第31位.这32位可以分为3个部分:符号位(第31位),阶码(第30位到第23位共8位),尾数(最低23位)。
    1、符号位。最高位也就是第31位表示这个实数是正数还是负数,为0表示正数或0,为1表示负数.
    2、阶码。第30位到第23位这8个二进制位表示该实数转化为规格化的二进制实数后的指数与127(127即所谓偏移量)之和即所谓阶码.
    规格化的二进制实数的指数只能在-127----+127之间,所以,一个float型数的最大值在+2^127即+3.4*10^38,最小值在-2^127即-3.4*10^38.
    3、尾数。其他最低的23位即第22位到第0位表示该实数转化为规格化的二进制实数后小数点以后的其余各位即所谓尾数.


    例如,将十进制178.125表示成机器内的32个字节的二进制形式.

    第一步:将128.125表示成二进制数:(178.125)(十进制数)=(10110010.001)(二进制形式);
    第二步:将二进制形式的浮点实数转化为规格化的形式:(小数点向左移动7个二进制位可以得到)
    10110010.001=1.0110010001*2^7 因而产生了以下三项:
    符号位:该数为正数,故第31位为0,占一个二进制位.
    阶码:指数为7,故其阶码为127+7=134=(10000110)(二进制),占从第30到第23共8个二进制位.
    尾数为小数点后的部分, 即0110010001.因为尾数共23个二进制位,在后面补13个0,即01100100010000000000000
    所以,178.125在内存中的实际表示方式为:
    0 10000110 01100100010000000000000

     程序猿必读

  • 相关阅读:
    ASP.NET常用技巧方法代码断
    130道ASP.NET面试题
    ASP.NET 数据绑定常用代码及其性能分析
    asp.net C# 时间格式大全
    ASP.NET 日期 时间 年 月 日 时 分 秒 格式及转换
    经典算法,每个语言都出现的算法
    Asp.net 后台添加CSS、JS、Meta标签
    ASP.NET 窗体间传值实现方法详解
    asp.net 常用的几种调用存储过程的方法
    codeforces 868C
  • 原文地址:https://www.cnblogs.com/longzhongren/p/4411804.html
Copyright © 2011-2022 走看看