码迷,mamicode.com
首页 > 其他好文 > 详细

float和double类型的存储方式

时间:2014-08-15 21:06:09      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   strong   2014   log   ad   

Float double 类型在计算机的存储方式

         计算机中只认识10的二进制数,那么该如何存储小数呢?

         那么我们先看Floa类型:

Float在计算机(32位)中是4个字节的,具体地:第一位为符号位0为正,1为负 第2到第9位为指数位,第10到32位为尾数位,具体地如下图所示:

1

2

 

 

 

 

 

 

9

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

32

 

现在我们举个例子:

8.25的二进制表示方法为:1000.01 =1.00001*23 ,指数为3,尾数为00001,那么它怎样在二进制中存储呢?

首先看符号位为正,所以第一位为0,指数为3,要加上127=130,130的二进制数是1000 0010 填到第二到第九位中,最后的尾数部分就为0000 1 尾数后面的空余部分补0.

0

1

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

表示为十六进制就是41040000,那么究竟对不对呢?我们用程序跑一下就知道了:

 bubuko.com,布布扣

可以看到结果是正确的。

同理double型也是同样的道理,只不过符号位是1位,指数位为11位,尾数位为52位,当计算指数时,要用指数加1023,然后转换成二进制。

下面说下取值范围和精度:

取值范围看指数部分:

float是有符号型,其中,8位指数位,2^8=(-128—127),因此实际的范围是-2^128—2^127,约为-3.4E38—3.4E38

同理double范围约是-1.7E308—1.7E308,

精度是看尾数部分:

float尾数位23位,2^23=8.3E6,7位,所以不同的编译器规定不同,有些是7位,有些8位

double尾数52位,2^52=4.5E15,15位,所以double的有效位数是15位

 

float和double类型的存储方式,布布扣,bubuko.com

float和double类型的存储方式

标签:style   blog   http   color   strong   2014   log   ad   

原文地址:http://www.cnblogs.com/mu-tou-man/p/3915636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!