浮点数的转化

首先 浮点数2.5写成二进制应该为10.1(其中整数部分10b=2d, 小数部分0.1*2=1所以0.1b为0.5d)。
然后要把10.1规格化(写成1.xxxx * 2^n的形式,有点像科学计数法)得到1.01*2^1(其中2^1中的1为阶码, 1.01为有效数字)
加上2.5为正数,这就得到三部分信息:
1. 有效数字为1.01.
2. 阶码为1.
3. 符点数为正数

而c/c++的float类型结构为:
1. 最低的23位记录规格化小数中的有效数字(但是不保存最前面的1)
2. 之后的8位记录阶码(上面的阶码转换到这里要+127)
3. 最高的一位表示正负数(0为正数,1为负数)

最终得到的二进制数为:
高位 低位
0 10000000 01000000000000000000000
整理得:
0100 0000 0010 0000 0000 0000 0000 0000
转到16进制得:
40200000


在如200.0的单精度浮点数

200的二进制为11001000其中阶码为1.1001*2^7

7+127=134  二进制阶码10000110

有效位1.1001去掉首位1  为1001

得到 0 1000 0111 100100...........

再整理0100 0011 0100 1000 0000 0000 0000 0000

为43 48 00 00

 

 

小端模式:(从低字节到高字节)
地位地址 0x78 0x56 0x34 0x12 高位地址

大端模式:(从高字节到低字节)
地位地址 0x12 0x34 0x56 0x78 高位地址

浮点数的转化_第1张图片

 

你可能感兴趣的:(学习)