C语言内存篇——数据的存储(介绍篇)

        

目录

   整形数据在内存中的存储。

1,整形数据我们可以怎么归类划分?

2,整型在内存中的存储


c语言有如下的数据类型

char类型对应的就是我们常见的单个字符——a,A,b,B等。

short、int、long、long long四种数据对应我们常见的整型(变量)——比如1,100,1000

区别在于所占空间大小不同——也就是数据的不同。

float double两种对应我们的小数——1.0,2.9等等。

 当我们创建并使用以上的变量时,我们便会向内存申请一段空间来放置该类变量,通过操作符sizeof我们可以轻松得知各类变量的内存大小:

 

         (在vs2019的编译环境下)我们可以看到各类数据的内存空间大小,单位是字节,正如上面所说,我们的short,int,long,long long四个变量都是存放整形类型,不过大小不同罢了。那么我们则需要知道,在计算机的世界里,是没有那么多庞大复杂的数字来存储信息的,计算机的世界都是二进制——0 1两数来存储。可我们熟知的数字无论是整数还是小数,都是有超过0,1的数字的,那么他们在内存中的存储是怎样的呢?那么我们便先来介绍整形数据的存储吧。

   整形数据在内存中的存储。

1,整形数据我们可以怎么归类划分?

除开上述的float和double浮点数数据,我们可以将char,short,int,long,long long都归类为整形数据,为什么字符型数据char可以归结为整型呢?我们可以看下面这段代码

 

 用%c打印就是字符本身,而用%d打印则是数字,这里的数字打印的是A的ASCII码值,是个整数,所以在整理划分时我们可以将char类型数据放在整型数据里面。

 我们可以将上述的整型类如此归类并了解。

2,整型在内存中的存储

创建一个变量就要向内存申请开辟一段空间,而该空间的大小由数据类型来决定,当我们创建如下两个变量时,我们知道a,b都占用了内存四个字节的空间大小,那么他们在内存中如何存储呢?

int a = 0;
int b = 0;

下来我们就要聊到原码,反码,补码的概念:

        在计算机中,整数有三种二进制的表示方法——即原码,反码,补码。

原码:直接将数值按照正负数的形式翻译成二进制就可以得到原码。 

反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

补码:反码+1就得到补码。

C语言规定——正数的原反补都相同,不用做如上改变。

        这三种表示方法均有符号位和数值位两部分构成,我们将数值的二进制的数值最高位设置为字符位——0表示正的,1表示负的。其余位表示数值位。我们只需要将规定的数值转成二进制即可表示相对应的二进制位,举个例子:

int a = 1;

int b = -1;

int在内存中的大小是四个字节,也就是32个比特位,而1的二进制表示是0001,所以我们可以写出a和b的二进制的原码反码补码:

a的原码:00000000000000000000000000000001b的原码:10000000000000000000000000000001
反码:00000000000000000000000000000001反码:11111111111111111111111111111110
补码:00000000000000000000000000000001补码:11111111111111111111111111111111

我们可以直观的看到一个数据就有三种形式存在,那么为什么会有原反补码的存在呢,在数据存储中,它们是怎么放在内存中呢?

对于整形来说,我们是将它的二进制的补码存放在内存中的,数值一律用补码来表示并储存,因为(1)CPU只有加法处理器,使用补码可以将符号位和数值位统一并加以计算,用补码来储存数据可以使加减法得到统一

(2)补码到原码的相互转变过程是相同的,不需要额外的硬件电路和方法。

我们知道1-1就相当于1+(-1)  (该过程就相当于将减法转变为加法来方便CPU的处理计算)当我们以原码为例计算该式子时

 

 有如上解释,所以我们便是懂了,补码的存在原因及其作用。以上便是整形数据在内存中存放的基础了解,小编会慢慢更新这期内容直到完结,请期待吧~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值