美文网首页
C语言中浮点型的存储方式

C语言中浮点型的存储方式

作者: 郎官人 | 来源:发表于2018-05-15 10:29 被阅读0次

我们知道,整数在内存中是以补码的形式存放,其中正整数的原码反码补码相同;而负数的补码是它的反码加1.

例:

原码:0000 0000 0000 1000
反码:1111 1111 1111 0111
补码:1111 1111 1111 1000 

那么浮点型呢?开局一张图

类型 描述
float 单精度浮点值。单精度是这样的格式,1位符号,8位指数[阶码],23位小数。 image
double 双精度浮点值。双精度是1位符号,11位指数,52位小数。 image

以float为例描述储存过程。

  1. 将浮点数转化为二进制数据
  2. 将二进制数据转化为指数形式
  3. 将指数进行移为(float +127,double +2^10-1)
  4. 最高位表示符号,依次表示指数与尾数

如 浮点数4.5f

  1. 转化为二进制数据为 4->100,0.5->1====>100.1
  2. 转为指数形式为1.001*2^2
  3. 以上得到指数为2,底数为2,尾数为1.001
  4. 最高位表示符号,为正,所以最高位为0,中间8位表示指数,指数为2,移位后为129,用二进制表示为:10000001
  5. 尾数1.001因为表示成指数后第一位都是1,所以可省,只记录001,其余以0补位
  6. 最终结果为:01000000100100000000000000000000
  7. 转化为十六进制为:0x40900000

相关文章

网友评论

      本文标题:C语言中浮点型的存储方式

      本文链接:https://www.haomeiwen.com/subject/tnledftx.html