深度剖析数据在内存中的存储

前言

这篇文章主要针对的是对于整形数据在内存中如何存储的,下一篇文章会和大家更新浮点数如何在内存中存储。


目录

系列文章目录

前言

一、数据类型的介绍

 

1.1数据类型的分析

二、整形数据在内存中的存储

总结


一、数据类型的介绍

其中在之前我们已经学习过多种数据的类型(大多数都是C语言内置类型)其中包括

Char

Short

Int

Long

Longlong

Float

Double

  其中我们在学习关于关键词的时候,学过一个关键词sizeof,当学习sizeof的时候已经详细的讲解过不同的数据类型的大小。

  那么还有一个问题为什么会有这么多种数据类型呢? 他们的具体意义有哪些?

     

     下面我来给大家解答这两个问题:

     其实内存是一块连续并且不是很大的空间,我们的进程运行的时候,会在相对应的内存中开辟空间,其中我们会使用到很多的变量用来保存数据,考虑到变量的大小不同,取值范围不同,如果给一个特别小的数字,一个很大的空间就会造成对空间的浪费。

在这个背景之下,我们不难发现

  1. 数据的类型决定了在内存中开辟的变量占用内存的大小。
  2. 数据类型决定了如何看待内存中的视角。(这个我们后面会详细的讲述)。

 

1.1数据类型的分析

     其中我们学过这么多的数据类型,那么这是数据类型之间有什么关系,以及我们应该如何对这些分类。

  其中我们可以具体分为五类

整形家族

Char :

     Signed char

     Unsigned char

Short

     Signed short

     Unsigned short

Int

     Signed int

     Unsigned int

Long

    Signed long

    Unsigned long

浮点数家族

Float

Double

构造类型(自定义类型)

数组

结构体 struct

枚举enum

联合体union

指针类型

字符指针 char*

整形指针 int*

浮点型指针 float*

空指针 void*

空类型

Void,以及空的指针类型,函数返回值,函数参数

二、整形数据在内存中的存储

   我们讲过数据在内存中存储的时候是需要开辟空间的,而开辟空间的大小是由数据类型决定的。

 下面我来带大家深刻的理解一下整形数据是如何存储在内存空间中的。

例子:

 Int a = 10;

 Int b = -10;

 问题 :  其中我们知道a 和 b变量为整型变量,在开辟的时候会给四个字节的空间。 那么这四个字节是怎么储存的呢?

解答:

 

 

问题:我们看到了内存中对于这两个变量的存储 , 为什么会出现顺序相反的结果呢?

解答:这里不得不提到一个知识点关于大小端字节序。

    在解释这个概念之前,我想给大家讲解一下,一个整型数据有四个字节的空间。然而,超过一个字节就有顺序之分,那么到底怎么排序呢?

    其中四个字节的内容按照权重,可分为高权重(高位),地权重(地位),对于以上可能说起来比较难.  我给大家举一个例子,1234 这个数字1的权重是1000,2的权重是100,3的权重是10,4的权重是1. 这个就是对于权重的最好的解释。

   我们通常认为内存是一块连续开辟好的空间,内存也有对应的高低地址之分。

    解释完以上内容就能更好的理解为什么有大小端了。大小端就是数据对应的内容在内存中的储存方案。

大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中;

小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。

 


总结

  以上是我对整形数据在内存中是如何存储的深刻理解,希望对大家学习有帮助如果大家有什么问题,可以评论区中提问探讨,随时在线。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值