Float的存储方式

Float的存储方式

目录

Float的存储方式

最大值

最小值

精度(有效数字)


十进制:8.5

二进制:1000.1

每位的值(8421.1/2)

  二进制:1.0001*2^3

符号位为0 指数位为127+3(正+负-)

变化后的二进制存储方式为

最大值

(指数位全0和全1都不能用)指数最大为254-127=127。

尾数位约等于1,再加上省略的整数1,和为2,float能存的最大值为2*2^127=2^128。也就是3.4*10^38次方

 

最小值

计算:尾数部分约等于0,加上省略的1就是1,指数位为1-127=  -126,所以最小值为2^-126,约等于1.2*10^(-126)

精度(有效数字)

                  简单算法:1/(2^23)= 0.00000011920928955078125大约是小数点后六到七位之间。

                  或者:lg(2^23)约等于6.92

sizeof

Un的用%d输出第一位变成符号位,所以它的原码为10000000 00000000 00000000 00000001,也就是-1。

End用%d输出没问题,精度小的向精度大的转变,没问题。

Big大精度变小精度。前16位被覆盖,只剩后16位11111111 11111111,原码为10000000 00000001 也就是-1。

Verybig补码为0 111…………111(63个1)加1后变成1000…………000(63个0),用%lld 输出为-9223372036854775808(最小的负数)