1.数据在内存中的存储
明确变量类型对于数据存储的意义:
- 类型决定开辟内存空间的大小
- 决定如何看待二进制序列在内存中的存储方式(比如Int,和float的存储方式就不一样,将int直接输出为float时会发现输出大不相同的情况)
整型在内存中的存储
例如 int a=-10;
存
1.先看赋值操作符右边,将对应数字化为对应二进制序列(符号位),然后化为对应补码形式
2.看变量类型->开辟了多大空间,然后将二进制序列补码按字节放入对应空间中
取
1.取即读取,此时需要先看变量类型,如果是整型且未无符号数直接按二进制序列输出,如果是有符号数需要求出补码对应的二进制序列;如果是float型则较为复杂
注:此处涉及二进制的原码、反码、补码概念。原码就是最高位为符号位的数字的绝对值对应的二进制序列。
大小端存储:
小端存储:是指数据的地位保存在内存的低地址当中
(例:0x0021FA14)在内存中是14 FA 21 00 内存中存储与数字表示相反
大端模式:数据的低位保存在内存的高地址中
课外知识:大小端模式–>在计算机系统中,我们是以字节为单位的,每个地址单元对应一个字节,一个字节为8bit
float在内存中的存储
三要素:S、M、E
(S:符号位
E:指数位(-127才为实际指数)【这里的E是无符号数】
M:有效数字为(注意这里省略了小数点前1,还原时注意加上去))
float类型的数字需要转换为对应的计数法
例如:-5.0,写成二进制是-101.0,对应-1.01*2^2.。
对应的就是s=1,E=2+127,M=01
注:
标准10进制的有效数字>=1&<10;
标准二进制的有效数字>=1&<2;
所以小数点前的1没有必要存,故只需存小数点后数字
即有效数字M一定是1.XXXX,所以M只需要从左向右填上XXX,剩余位补0即可
注意E分三种情况:
- E不全为0或不全为1:正常计算即可
- E全为0:此时指数特别小,M不取决定性作用,此时我们将该值看为0
- 全为1:此时指数太大,我们将该数看成无穷大或无穷小