C语言浮点数存储

浮点数采用IEEE32位标准浮点数格式(标准C语言格式),长度为32bits,存储格式为四个字节,格式如下表所示。

D31D30-D23D30-D23D15-D8D7-D0
浮点数符号S阶码E尾数高位尾数中位尾数低位

若阶码为E,尾数为M,则有:浮点数值=±(1+M×2^23)×2^(E-127)
浮点数的正负取决于符号位S的值,S=1表示浮点数为负,S=0则表示浮点数为正

例如:当32位浮点数为40H,A0H,00H,00H时,

即S=0,E=81H=129,M=200000H=2^21,则:

浮点数值=(1+2^21×2^-23)×2^(129-127)=1.25*2^2=1.25*4=5.0;

发送时按符号位及阶码、尾数高位、尾数中位和尾数低位的先后顺序发送4个字节。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中的浮点数使用IEEE 754标准来进行存储。IEEE 754标准规定了浮点数的表示方法,包括浮点数的符号位、指数位和尾数位。 在C语言中,浮点数使用float和double两种数据类型进行表示。float类型占用4个字节,double类型占用8个字节。 浮点数存储方式可以分为三个部分: 1. 符号位(Sign):浮点数的符号位用一个bit来表示,0表示正数,1表示负数。 2. 指数位(Exponent):浮点数的指数位用一定的位数来表示。在float类型中,指数位占用8个bits,而在double类型中,指数位占用11个bits。指数位的值通过偏移码来表示,偏移码是指将真实的指数值加上一个偏置值,这个偏置值在float和double类型中分别是127和1023。指数位的值表示了浮点数的数量级。 3. 尾数位(Significand or Mantissa):浮点数的尾数位用一定的位数来表示。在float类型中,尾数位占用23个bits,而在double类型中,尾数位占用52个bits。尾数位的值表示了浮点数的精度和小数部分。 浮点数的实际值可以通过以下公式计算得到:实际值 = (-1)^符号位 × (1 + 尾数位) × 2^(指数位 - 偏置值)。 浮点数存储方式使得它可以表示非常大和非常小的数,并且具有一定的精度。然而,由于浮点数存储方式以及精度问题,对于一些比较精确的计算,可能需要使用其他更为精确的数据类型或者进行一些特殊的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值