内存中的数据存储(1)

目录

前言

一。数据类型的归类

空类型:void表示无类型(通常用于函数的返回类型,参数,指针类型)不需要任何返回

二。整形在内存存储

原码,反码,补码

大小端字节序存储


前言

在这篇文章中,让我们更加理解数据在内存中的存储,数据类型介绍,数据在内存中存储的方式,大小端字节的判断,浮点型在内存中的存储解析;希望会对大家有所帮助!!!!!

一。数据类型的归类

  1. 整形类型 (有符号)                  

  2. 浮点数类型

  3. 构造类型(自定义类型)

  4. 指针类型

  5. 空类型

  • 整形类型中有:int ,short,long,long long ,当然还有一个char型,因为字符存储的时候存储的是ASCLL码值,是整形,归类为整形的家族当中
  • 浮点型类型中有:float,double,long double型
  • 自定义类型:数组类型,结构体类型:struct,枚举类型:enum,联合类型:union.就是可以自己定义。
  • 指针类型:int*p等等,还有结构体的指针被称为指针类型
  • 空类型:void表示无类型(通常用于函数的返回类型,参数,指针类型)不需要任何返回

二。整形在内存存储

原码,反码,补码

创建一个变量就要在内存中开辟一个空间,空间的大小由类型决定,

比如说整形类型

创建变量a,a向内存申请4字节存放数据

int a=10   //4字节32比特位-----00000000000000000000000000001010

**正的原码=反码=补码

int b=-10   //-------------原码-----10000000000000000000000000001010

          原码取反  -------反码-----111111111111111111111111111111110101

              反码加1  -----补码-----111111111111111111111111111111110110

整形类型的二进制类型表现形式有:原码。反码。补码。

在位操作符的运算中,我们用的就是补码,这3码的表现形式是如下

符号位

(0表示正,1表示负)

数值位

其中,正数的原码,反码,补码都一样

但是,负数的反码:符号位不变,数值为取反

 补码:反码+1即可

对于整形来说,内存中存放de是补码。为啥?

因为用补码可以将符号位和数值位统一处理,同时加法减法也可以统一处理(cpu只有加法器,减法可有加法转换)此外补码和原码相互转换,运算过程不需要额外的硬件电路(如下)

//计算
1+(-1)
 00000000000000000000000000000001 --> 1的补码
 11111111111111111111111111111111 --> -1的补码
 00000000000000000000000000000000
 
 //原码计算是错误的
00000000000000000000000000000001
10000000000000000000000000000001
10000000000000000000000000000010---> -2

大小端字节序存储

在vs中,为了方便,便用16进制表示如:-10的补码111111111111111111111111111111110110

四个为一组对应16进制的一个数,看下图

//

可以看出,补码是倒着存储的///为啥?看下面

1.字节序:是以字节为单位,讨论存储顺序的

 小端字节序(规定)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞎蹬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值