整型数据与实型数据在内存中如何存储

  在指针函数栈帧两篇文章中,我们反复提及了信息是需要储存的。那它们又到底是如何储存在内存中的呢?
  我们知道计算机是只能读懂0/1的,即信息在内存中的储存形式是以特殊0/1的排列组合。而下文将主要从数的储存为代表:
  首先,一个小常识:cpu只会加法运算。
  其次,在指针一文中,我们知晓每一个数据类型定义一个变量,系统都会分配一个地址,而地址所指向的空间内存是相同的(32位:4字节、64位:8字节)。
  然后,由数据对应储存是有限制的,比如,char(1字节)、short(2字节)等等。
  最后,依据加法原则,我们会考虑到,当两个或多个不同(相同)数据相加,数据总和可能会超过储存限制而导致数据丢失(数据丢失也可以是转换导致)。

在这里插入图片描述

  因此,编译器在进行两个或多个不同(相同)数据相加时,会进行数据类型提升
在这里插入图片描述

  于是,数的储存大体可分为整型与实型的储存。以 32位:4字节 为代表。

  同时,储存方式上会出现两种形式,大端储存小端储存
  我们习惯大端储存,比如,1520、2634、1651等等。我们由于习惯会知晓左位为大,右位为小。那我们抛去习惯,可不可以,0251、4362、1561等等。其实两者都是正确的,数的使用是看使用者如何去使用。
现在,以我们的习惯为标准,定义右位为小端,左位为大端。

大端储存:数据的小端字节储存在内存的大端字节,数据的大端字节储存在内存的小端字节。

小端储存:数据的小端字节储存在内存的小端字节,数据的大端字节储存在内存的大端字节。
(补充:内存大端为低地址,内存小端为高地址)
在这里插入图片描述

  对于整型数据,有三种储存形式,原码,反码,补码。
  由于符号位的存在,如果原码储存,0会有多种储存;如果反码储存,0会有两种储存;如果反码储存,0只有一种储存。
在这里插入图片描述
因此,补码成为内存储存数据的唯一方式。

  对于实型数据,满足IEEE 754标准,这里就不过多讨论了。
在这里插入图片描述
在这里插入图片描述
同理,浮点数也满足补码储存。

  • 30
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值