数据在内存中的存储
明确变量类型对于数据存储的意义:
- 类型决定开辟内存空间的大小。
- 决定如何看待二进制序列在内存中的存储方式。(比如Int,和float的存储方式就不一样,将int直接输出为float时会发现输出大不相同的情况)
整型在内存中的存储
例如 int a=-20;
存
- 先看赋值操作符右边,将对应数字化为对应二进制序列(符号位),然后化为对应补码形式。
- 看变量类型->开辟了多大空间,然后将二进制序列补码按字节放入对应空间中。
取
取即读取,此时需要先看变量类型,如果是整型且未无符号数直接按二进制序列输出,如果是有符号数需要求出补码对应的二进制序列;如果是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:此时指数太大,我们将该数看成无穷大或无穷。