浮点数(float及double)的本质及其在计算机中的存储

来源:互联网 发布:win764位精简优化版 编辑:程序博客网 时间:2024/06/04 17:49

float和double在存储方式上都是符合IEEE的规范的
下面先说float(double与之类似)
float型数据共有且只有4个字节,即32位
从左到右共分为三个部分:
1.第1位为符号位(1位)
2.从第2位到第9位为指数位(8位)
3.从第10位到第32位为尾数位(23位)

float的表示方法类似于科学计数法
尾数为1+小数,由于1为固定,所以实际存储中,尾数部分只存储数据的小数,1不再存储。
由于尾数只有8位,所以能表示精度最小单位是2的(-23)次方,为0.00000011920928955078125,所以能其精度只有6位(即它能完全表示到的小数位数)
下面介绍如何把float数据转换成实际计算机中的二进制存储:
1.符号位,正则0,负则1
2.把十进制数转化为二进制(这个都会吧)
左右移动二进制数据,直到其整数部分只有1.
.移动的位数即为其指数位(左移为负,右移为正)
指数部分需要+127转化为补码存储
3.小数部分即为尾数部分,
把1,2,3加起来即得到该float数据的计算机存储
下面举具体例子来说明:
float数据:3.5
3.5转化为二进制,整数部分3转化为二进制:11,小数部分转化成二进制:1,即3.5对应二进制:11.1
符号位:0
右移1位变成1.11,
指数是1,1+127为128,二进制就是,10 00 00 00
尾数是:11(”.”后面的即是)
合在一起就是
0 10000000 110000000000000000000000
上面即为3.5的计算机实际存储
double类型类似

0 0