float的内存存储

其他进制转二进制

十进制->二进制 eg:十进制数10转换二进制 10/2=5········0 5/2 = 2······1 2/2 = 1·····0 1/2 = 0······1 所以10的二进制为1010 float->二进制 8.25 整数部分与上面一样 8/2=4···0 4/2 = 2···0 2/2 = 1···0 1/2 = 0···1 8->1000(b) 0.25->二进制 0.25*2 = 0.5 <1 0 0.5*2 = 1.0 = 1 1 所以8.25 = 1000.01 = 1.00001*2^3

概述

符号域:S 占一位 正数为0 负数为1 接吗域:E 占8位 或者11位 E=e+127或者E=e+1023 尾数域名:M 23位或者52位 小数位部分 float的存储结构 由于计算机中只能存储二进制数据,所以十进制数据必须转成二进制数

例如:-8.25=-1000.01=-1.00001*2^3

小数转换二级制

-8.25转化为二进制,转化如下:以2为基数

整数部分

8/2=4............0

4/2=2............0

2/2=1............0

1/2=0............1

所以整数部分是1000

小数部分 取整数部分

0.25*2=0.5........0

0.50*2=1.0........1

所以小数部分是01

所以8.25转为二进制为1000.01

float内存存储

8.25 = 1000.01 = 1.00001*2^3 首先化为规范化的指数形式 符号域 阶码域 尾数域 0 3+127 00001000000000000000000 所以符号域 = 0 阶码域 3+127 = 130 ->10000010(b) 尾数域:00001000000000000000000 2023-04-04T01:28:39.png 0100 0001 0000 0100 0000 0000 0000 0000 4 1 0 4 0 0 0 0 所以浮点数8.25在内存中存储的数据是0x41040000 double的存储结构 双精度类似单精度 不写了。