当前位置:网站首页>数据在内存中的存储相关内容
数据在内存中的存储相关内容
2022-06-25 12:35:00 【LIn_jt】
数据在内存中的存储相关内容
我们已经知道,c语言中有以下这么几种变量类型,分别为:>
char //字符类型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点数
double //双精度浮点数
本文将介绍整型数据在内存中的存储。
首先就是将整型类型归一下类啦,要注意的是,char 类型也归结到整型类型里面,因为字符类型在内存中是以ascii码值进行存储的.
也即整型家族里面一共有这几位成员:>
我们知道,在创建一个变量的时候,会相应的在内存中开辟一块空间,那么这个变量的数据是如何存储在内存当中的?,我们需要先了解以下几个内容:>
一.原码反码补码
1.原码:
按照该数据直接写出的二进制位就是该数的补码,举个栗子:
我们通过-1直接写出来该二进制序列即为该数的原码,要注意的是,该二进制序列最高位为符号为,负数为1,正数为0
2.反码:
反码在原码的基础上,符号位不变,其他位按位取反,还是上面的例子,我们看一下-1的反码:>
![**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rHAuNVSj-1637644746297)(C:\Users\MSI-NB\AppData\Roaming\Typora\typora-user-images\image-20211122232506362.png)]**](/img/e3/3104dbe088e3e02cbdc8c6668ae819.png)
3.补码:
补码在原码的基础上+1即可:
这就是我们那个熟悉的全1二进制序列了
因此,原反补的计算规则为:

补码想转化到原码也即以上的逆过程,即补码-1得到反码,然后反码符号位不变,其他位按位取反即可.
上述讨论是基于该数据是负数的情况下,实际上,若数据为正数,其原码反码补码都是一样的,举个栗子

原码反码补码都为该二进制序列。
而内存中存储的都为补码。可以用原码计算一下-1+1,你会发现结果等于-2,常识告诉我们这是不可能的:

二.大小端存储
我们先来看一下一个变量在内存中的存储情况:

我们发现,这个变量在内存中是倒着存储的,即44332211以此存储,实际上,变量在内存中的存储有两种情况:
我们知道,44是a的低位字节序,如果低位字节序存放在高地址处,高位字节序放在低地址处,则称为大端存储。
而以下

则称其为小端存储,即将低位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处。
现在我们给出大端小端的概念:
大端存储:指将数据的低位字节序的内容存放在高地址处,高位字节序的内容存放在低地址处。
小端存储:指将数据的低位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处。
现在我们设计一个程序来判断vs环境下是大端存储还是小端存储,我们只需要看一个数据第一个字节中的内容即可,即


因此,我们只需要访问到第一个字节的内容即可,那我们就需要用到一个char类型的指针变量。
我们设计出以下程序:>

结果是:>
因此,vs编译器底下整型数据存储为小端存储。
边栏推荐
- KDD 2022 | graphmae: self supervised mask map self encoder
- 提高排名的 15 个基本 SEO 技巧
- 揭秘GaussDB(for Redis):全面对比Codis
- [machine learning] model and cost function
- Fedora 35 deploys DNS master-slave and separation resolution -- the way to build a dream
- 515. Find Largest Value in Each Tree Row
- 重装cuda/cudnn/pytorch
- Django framework - caching, signaling, cross site request forgery, cross domain issues, cookie session token
- 指针,它那些不得不说的题目
- AI assisted paper drawing of PPT drawing
猜你喜欢

揭秘GaussDB(for Redis):全面对比Codis
![[machine learning] parameter learning and gradient descent](/img/28/bb0a66b5f0702c995ca9cd7546b678.jpg)
[machine learning] parameter learning and gradient descent

剑指 Offer II 029. 排序的循环链表

J2EE从入门到入土01.MySQL安装

PPT绘图之AI助力论文图

指针,它那些不得不说的题目

Sword finger offer II 029 Sorted circular linked list

J2EE from entry to earth 01 MySQL installation

Sword finger offer day 2 linked list (simple)

515. Find Largest Value in Each Tree Row
随机推荐
20220620 面试复盘
德国举行全球粮食安全团结会议
Online service emergency research methodology
Talk about 11 key techniques of high availability
JVM参数解释
时间过滤器(el-table)中使用
AI assisted paper drawing of PPT drawing
美创入选“2022 CCIA中国网络安全竞争力50强”榜单
Introduction to string 18 lectures Collection 4
Summer Ending
MySQL writes user-defined functions and stored procedure syntax (a detailed case is attached, and the problem has been solved: errors are reported when running user-defined functions, and errors are r
Sword finger offer II 025 Adding two numbers in a linked list
提高排名的 15 个基本 SEO 技巧
golang键盘输入语句scanln scanf代码示例
C # switch between Chinese and English input methods
15 basic SEO skills to improve ranking
阿里稳定性之故障应急处理流程
Qt鼠标跟踪
Baidu search stability analysis story
Update PIP & Download jupyter Lab