3-1 浮点数在内存中的存储

#include <stdio.h>

int main()
{
    float f=-8.25;      //浮点数在内存中的表示 -8.25=>1000.01=>1.00001x2^3
                        //1位符号位+8位指数位+23位指数位
                        //符号位1 指数127+3=130=>1000 0010 尾数00001
                        //1100 0001 0000 0100 0000 0000 0000 0000
    unsigned int* p;

    p=&f;

    printf("0x%08x\n",*p);

    return 0;
}

在这里插入图片描述

1.C语言中 浮点数(float 32bit,double 64bit)在内存中的储存方式如下图:

type 符号位 指数位 尾数位
float 31位 (1 bit) 23~30位(8bit) 0~22位(23bit)
double 63位 (1 bit) 52~62位(11bit) 0~51位(52bit)

2.浮点数的转化分为3步:

  1. 转化为二进制
  2. 用科学计数法表示
  3. 指数加上偏移量

3.浮点数的正负数在内存中的存储相同IEEE 754标准,不同于有符号数正数负数考虑补码的差异
(Tips: 这一点是写给自己看的,有时候会陷入浮点数是不是有补码的圈子23333)

原创文章 8 获赞 1 访问量 289

猜你喜欢

转载自blog.csdn.net/rororwww/article/details/105757553
今日推荐