数据在内存中的存储——深层解析

简介: 数据在内存中的存储——深层解析

:two_hearts::two_hearts::two_hearts:我们已经对C语言进行了一些学习与探讨,但==数据到底是如何在内存中存储==的我们是否知道,这里就应该画上一个大大的问号了???你真的知道吗?

一、数据类型的分类

==char== 字符型
==short== 短整型
==int== 整形
==long== 长整形
==long long== 更长的整形
==float== 单精度浮点数
==double== 双精度浮点数

为什么数据会分这么多类型,为什么不只统计定义一个使用?C语言有没有字符串类型.

类型的意义:
1.使用不同的类型开辟的空间大小不同(使用范围)
2.在内存中存储方式不同.

1.1.类型的归类

整形:
char
unsigned char
signed char
short
unsigned short [int]
signed short [int]
int
unsigned int
signed int
long
unsigned long [int]
signed long [int]

浮点数:
float
double

构造类型:
数组类型
结构体 struct
枚举类型 enum
联合类型 union

指针类型:
int *p
char *p
float *p
void *p

二、整形的存储

int a=10;
int b=-20;

我们仅仅知道整形在内存中分配四个空间,那么它是怎么在内存中怎么分配存储的尼?
在这里插入图片描述

2.1.原反补码

对于一个数,计算机要使用一定的编码方式进行存储。 原码,反码,补码是机器存储一个具体数字的编码方式
原码:数值直接翻译成二进制
反码:符号位不变,其他位按位取反
补码:反码+1

为什么数据在内存中不直接存储原码,还要大动干戈转化为补码在进行存储?我们看下官方的答案:

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;
同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程
是相同的,不需要额外的硬件电路。

在这里插入图片描述
在这里插入图片描述
我们可以看到a,b分别以补码的形式在内存中存储

2.2.大小端的介绍

在这里插入图片描述
在这里插入图片描述
那什么是大小端存储尼?

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

:sunglasses: :sunglasses: :sunglasses:根据上面的分析,那么我们的整形在内存中是以大端的方式存储还是小端的方式存储尼?

在这里插入图片描述
在这里插入图片描述
我们以b=-20为例进行分析
在这里插入图片描述
可以分析到,我们数据的低位存在内存的低地址中,符合小端存储方式,那么我们整数大部分都是以小端的方式在内存中存储

2.3.如何用代码判断大小端存储

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int check_s() {
    int n = 1;
    return *(char*)&n;
}
int main() {
    int r = check_s();
    if (r == 1) {
        printf("小端存储\n");
    }
    else
        printf("大端存储\n");
    return 0;
}

在这里插入图片描述

2.4.经典再现

//输出什么?
#include <stdio.h>
int main()
{
    char a= -1;
    signed char b=-1;
    unsigned char c=-1;
    printf("a=%d,b=%d,c=%d",a,b,c);
    return 0; }
:grey_question::grey_question::grey_question: 不会有人天真的以为这个会输出三个-1吧,结果如下:
在这里插入图片描述

在这里插入图片描述

#include <stdio.h>
int main()
{
    char a = -128;
    printf("%u\n",a);
    return 0; }
:grey_question::grey_question::grey_question: 不会又有人天真的以为这个会输出三个-128吧,结果如下:

在这里插入图片描述
在这里插入图片描述

输出时为无符号输出,默认这个数是整数,而不是负数,所以才会输出一个很大的正数

在这里插入图片描述
:sunny::sunny::sunny:这一期的==数据在内存中如何存储==就到这里了,如果大家感到有帮助的话,记得一键三连哦.

目录
相关文章
|
6月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
1969 0
|
6月前
|
存储 缓存 NoSQL
内存管理基础:数据结构的存储方式
数据结构在内存中的存储方式主要包括连续存储、链式存储、索引存储和散列存储。连续存储如数组,数据元素按顺序连续存放,访问速度快但扩展性差;链式存储如链表,通过指针连接分散的节点,便于插入删除但访问效率低;索引存储通过索引表提高查找效率,常用于数据库系统;散列存储如哈希表,通过哈希函数实现快速存取,但需处理冲突。不同场景下应根据访问模式、数据规模和操作频率选择合适的存储结构,甚至结合多种方式以达到最优性能。掌握这些存储机制是构建高效程序和理解高级数据结构的基础。
626 1
|
6月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
567 0
|
10月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
602 4
JSON数据解析实战:从嵌套结构到结构化表格
|
10月前
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
|
10月前
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
10月前
|
缓存 监控 搜索推荐
【实战解析】smallredbook.item_get_video API:小红书视频数据获取与电商应用指南
本文介绍小红书官方API——`smallredbook.item_get_video`的功能与使用方法。该接口可获取笔记视频详情,包括无水印直链、封面图、时长、文本描述、标签及互动数据等,并支持电商场景分析。调用需提供`key`、`secret`和`num_iid`参数,返回字段涵盖视频链接、标题、标签及用户信息等。同时,文章提供了电商实战技巧,如竞品监控与个性化推荐,并列出合规注意事项及替代方案对比。最后解答了常见问题,如笔记ID获取与视频链接时效性等。
|
10月前
|
存储 缓存 监控
如何高效爬取天猫商品数据?官方API与非官方接口全解析
本文介绍两种天猫商品数据爬取方案:官方API和非官方接口。官方API合法合规,适合企业长期使用,需申请企业资质;非官方接口适合快速验证需求,但需应对反爬机制。详细内容涵盖开发步骤、Python实现示例、反爬策略、数据解析与存储、注意事项及扩展应用场景。推荐工具链包括Playwright、aiohttp、lxml等。如需进一步帮助,请联系作者。
|
10月前
|
JSON API 数据格式
淘宝商品评论API接口系列的应用与数据解析
在电商平台中,用户评论是了解商品质量、服务水平和用户满意度的重要数据来源。淘宝作为中国最大的电商平台,提供了商品评论API接口,帮助开发者获取和分析用户评价数据。本文将介绍淘宝商品评论API接口系列的作用、使用方法,并通过示例展示如何调用API并解析返回的JSON数据。

热门文章

最新文章

推荐镜像

更多
  • DNS