当一个整数int i = 12345被强制转换为一个FLOAT型变量
float f = (float)i;
假设sizeof(int)=32,float为单精度,sizeof(float)=32
那么i = 12345(十进制)=00000000000000000011000000111001
对于十进制12345,可以表示成1.2345 乘以10的4次方
同理,对于二进制层面
11000000111001可以表示诚1.10000001110011乘以2的13次方
即1.1000000111001<<13
那么1000000111001即为1.1000000111001的小数部分
根据单精度浮点数的定义
阶码为8位,尾数(即小数部分为23位)
设阶码为e,则e-127=13,,e=140,二进制表示为10001100
尾数部分1000000111001,
浮点数=符号(1)阶码(8)尾数(23)
因此
12345转换为浮点数后为
0 10001100 1000000111001 0000000000
对比整数时的二进制表示
1 1000000111001
可以看到尾数部分就是整数部分最高数字位后的其他部分