一、 工业应用中的问题
1、 国内自定义协议众多,数值在计算机中存储方式五花八门。
2、 计算机实际存储方式理解不容易或者忘记。
3、 硬件技术发展,让使用存储内存不再是难解决问题,浪费存储内存和传输带宽。
二、 计算机中浮点型简介
1、 浮点型定义
浮点型是计算机表示整数之间的数值类型。简述就是一个有小数点的值,该值就成为一个浮点型的值。
比:3.0、1.23e4、 1.23×10^4。
2、 浮点型标准
根据国际标准 IEEE 754/854浮点数标准是从逻辑上用三元组{S,E,M}来表示一个数 V ,公式如下图所示:
符号: S ,决定浮点数的是负数(S=1)还是正数(S=0),由一位符号位表示。
有效数:E是一个二进制小数,它的范围在1~2之间, 指数域的二进制表示为e,那么内存中存储的E=e+Bias。(Bias=2^k-1,k为指数域位数,其中float为8,double为11)。
指数:M是2的幂,可正可负,作用是对浮点数加权,由8位或11位的指数域表示
3、浮点值转二进制
3.1. 以小数点为界进行拆分
3.2. 整数部分转为二进制
3.3. 小数部分采用的是"乘2取整法",当乘2之后小数部分得到0就停止计算
比如:将10进制的8.87转化为2进制的小数?
整数部分8,转换为二进制100;
小数部分是0.87,
0.87×2=1.74 取整得: 1 剩下的小数部分为0.74;
0.74×2=1.48 取整得: 1 剩下的小数部分为0.48;
0.49×2=0.98 取整得: 0 剩下的小数部分为 0.98;
0.98×2=1.96 取整得: 1 剩下的小数部分为 0.96;
0.96×2=1.92 取整得: 1 剩下的小数部分为 0.92;
0.92×2=1.84 取整得: 1 剩下的小数部分为 0.84;
到此结束,排列为110111,即结果为0.110111;
所以10进制的8.87转化为2进制的小数为1000.110111。
4、内存存储
8.87在内存中存储方式?
根据公式知道: