float和double的存储结构

高位<==低位(例32<==0)
类型 符号位  指数位   尾数位 大小 
float  1    8  23  32bit
double  1  11  52 64bit 

单精度例1:

float b = 2.25;

b的二进制表示:10.01

b的二进制科学计数法表示:1.001*2^1

符号位:0(1位) 指数位:1+127=128 (8位) 尾数位:001(23位)
0  1000 0000     001 0000 0000 0000 0000 0000

双精度例1:

double c = 2.25;

b的二进制表示:10.01

b的二进制科学计数法表示:1.001*2^1

符号位:0(1位) 指数位:1+1023=1024(11位) 尾数位:001(52位) 
0           100 0000 0000                    0010 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

(111.01)= 7.4


计算机中的十进制小数用二进制通常是用乘二取整法来获得的

比如0.65换算成二进制就是:

0.65 × 2 = 1.3 取1,留下0.3继续乘二取整

0.3 × 2 = 0.6 取0, 留下0.6继续乘二取整

0.6 × 2 = 1.2 取1,留下0.2继续乘二取整

0.2 × 2 = 0.4 取0, 留下0.4继续乘二取整

0.4 × 2 = 0.8 取0, 留下0.8继续乘二取整

0.8 × 2 = 1.6 取1, 留下0.6继续乘二取整

0.6 × 2 = 1.2 取1,留下0.2继续乘二取整

.......

所以就是:0.1010 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110 0110

进制转换器网页:https://www.sojson.com/hexconvert.html

原文地址:https://www.cnblogs.com/still-smile/p/13362215.html