目录
整型提升
因为CPU的计算长度为int,所以比int短的类型都是被整型提升的对象;
整型提升的填充以符号位填充;
参与表达式计算,便会进行整型提升;
浮点数存储
符号位:S S为0 表示正数, S为1 表示负数
有效数字:M (1<m<2) 存入内存中时,我们会省略1;列入1.0001;存入0001;
指数位:E 1.将m的小数点推至剩一位(1.xxxx),乘上对应的 指数
例如1000.1 =》 1.0001 * 2^3 E=3
2.当E存入内存中时,其需要保持unsinged的类型,因此需要加上对应的修正值
float:E+127
double: E+1023
float存入的内存划分:
double存入的内存划分
实列: float 5.5在内存中的存储
第一步:
5.5为正 ;其符号位的表达式为 (-1)^0 => S = 0
第二步:
5 的二进制 00000101 0.5 的二进制 0.1 最终为:00000101.1
第三步:
M = 1.011 * 2^2 => E = 2
因为为float类型加上127修正值 M=127+2=129的二进制: 100000001
第四步:得 S M E
0 10000001 011000000000000000
将内存中的浮点数取出来:
E会有三种情况:1.E不全为0或者不全为1; 那便直接减去对应的修正值便可;
2.E全为0; 此时浮点数是一个无限接近于0的值,M(1.xxxx)也不再取1
3.E全为1;有效数字全为0,表示正负无穷大; 正负取决于符号位(S)