单精度浮点float占4字节32位,在内存中的表示方式为:
1.第1位表示符号位,0为正数,1为负数
2.中间8位表示为阶码,为了避免符号位占用阶码,所以阶码的初始值为127用e表示
3.后23位表示尾数,由整数的一部分二进制数+小数部分的二进制数组合而成。
下面进行举例:
以11.73为例:
整数部分:11
转换为二进制为:1011
小数部分:0.73
转换为二进制为:1011 1010 1110 0001 0100
0.73*2=1.46 1
0.46*2=0.92 0
0.92*2=1.84 1
0.84*2=1.68 1
0.68*2=1.36 1
0.36*2=0.72 0
0.72*2=1.44 1
0.44*2=0.88 0
0.88*2=1.76 1
0.76*2=1.52 1
0.52*2=1.04 1
0.04*2=0.08 0
0.08*2=0.16 0
0.16*2=0.32 0
0.32*2=0.64 0
0.64*2=1.28 1
0.28*2=0.56 0
0.56*2=1.12 1
0.12*2=0.24 0
0.24*2=0.48 0
组合为:1011.1011 1010 1110 0001 0100
按照规范需将该数转换为1~2之间的小数即:
1.0111011 1010 1110 0001 0100*2^3
阶码即为:127+3
因此11.73转换为二进制的内存表示方法为:
0(符号位,表正数)
100 0001 0(阶码,表130)
011 1011 1010 1110 0001 0100(尾数,整数部分+小数部分)
最终结果为:
0100 0001 0011 1011 1010 1110 0001 0100
413B AE14
双精度浮点double占8字节,64位。
1.第1位表示符号位,0为正数,1为负数
2.中间11位表示为阶码,初始值为1023用e表示
3.后52位表示尾数,由整数的一部分二进制数+小数部分的二进制数组合而成
运算规则同单精度运算规则。