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(最小的负数)