C语言进阶-数据的存储

本文详细介绍了C语言中数据在内存中的存储方式,包括整型和浮点型的数据存储原理。讨论了变量类型对内存空间大小的影响,以及如何进行存储和读取。文章还涉及了大小端存储模式,并特别解析了float类型数据的存储,包括指数的三种情况。
摘要由CSDN通过智能技术生成

1.数据在内存中的存储

明确变量类型对于数据存储的意义:

  1. 类型决定开辟内存空间的大小
  2. 决定如何看待二进制序列在内存中的存储方式(比如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存储模型

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分三种情况:

  1. E不全为0或不全为1:正常计算即可
  2. E全为0:此时指数特别小,M不取决定性作用,此时我们将该值看为0
  3. 全为1:此时指数太大,我们将该数看成无穷大或无穷小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值