C 中float在内存中的表示.docxVIP

  • 6
  • 0
  • 约1.73千字
  • 约 2页
  • 2021-11-08 发布于江苏
  • 举报
简单地说,一个 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)(十进制数)=001)(二进制形式); 第二步:将二进制形式的浮点实数转化为规格化的形式:(小数点向左移动 7 个二进制位可以得到)001=1.0110010001*2^7 因而产生了以下

文档评论(0)

1亿VIP精品文档

相关文档