首页 > 其他 > 详细

double值在内存中的存储

时间:2016-09-30 02:38:09      阅读:227      评论:0      收藏:0      [点我收藏+]

拿小数4.8125来举个例子,

 

实现步骤:

1.把整数部分转换为2进制

十进制的4 = 二进制的0100

 

2.把小数部分转换为2进制

0.8125 * 2 = 1.625        1

0.6250 * 2 = 1.25          1

0.2500 * 2 = 0.5            0

0.5000 * 2 = 1.0            1

拿小数部分不停的去乘以2,并取出每次结果的整数部分,直到小数部分为0为止或者到达指定精度为止

十进制的0.8125 = 二进制的0.1101

 

3.合并整数部分和小数部分

二进制的4.8125 = 100.1101

 

4.把二进制小数写成1.xxx * 10的n次方或者0.xxx * 10的n次方形式(n可以为负数)

100.1101 = 1.001101*10的2次方(左移)

  ①符号位:0表示正式,1表示负数

  ②指数位:第一位:小数点左移为1,右移为0,其他位:(n-1)的二进制数,

  ③尾数位:二进制的小数部分从左到右顺填

ps:

   float的符号位占1位,指数位占8位,尾数部分占23位

     double 的符号位占1位,指数位占11位,尾数部分占52位  

  

  float  0   0000 0000   0000 0000 0000 0000 0000 000

   double 0   0000 0000 000    0000 0000 0000 0000 0000 0000 0000....

1.001101*10的2次方:

  (n-1)的二进制 = 1的二进制 = 0001

  float 0   1000 0001   0011 0100 0000 0000 0000 000

   double 0  1000  0000 001 0011 0100 0000 0000 0000 ....

 

5.最后的结果

float    0100 0000 1001 1010 0000 0000 0000 0000

       4       0      9       A      0      0       0      0

double 0100 0000 0001 0011 0100 0000 0000 0000 ....

     4       0      1       3      4      0       0      0

 

程序运行结果图片:

 

技术分享

 

double值在内存中的存储

原文:http://www.cnblogs.com/chenlei0/p/5922408.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!