数据的存储

大小端存储模式、整形和浮点型的存储 (C语言) 文章目录大小端介绍整形在内存中的存储浮点数在内存中的存储 大小端介绍 我们在VS中键入一段代码后,对定义的变量在内存中的存储进行观察。 int main() { int a = 10; int b = -10; return 0; } 地址可以使用&+变量名进行搜索 我们可以发现按照逻辑a = 10,按照我们的思考逻辑应该是00 00 00 0a,b = -10则应该是ff ff ff f6(补码)然而结果却相反,那是因为变量在VS中采用了大端存储模式。接下来就着重介绍一下数据的两种存储模 阅读详情


每篇一句:

可以不光芒万丈,但不能停止发光

一、整形在内存中存储

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]

还要知道整形各自在内存中占有大小来加以判断,依次排序是1、2、4、4(8)个字节。有了一些了解可以判断不同类型整形所占有空间大小。但在计算机识别数据时,也只知道1,0。

2、原码、反码、补码

这里便解决了这个问题,原码、反码、补码这些都是1、0变换来表示其他数字大小以及存储。在整数中又可以分为正反俩类,这里便有了符号之分1为负,0为正。

原码:根据数值大小直接写出二进制位,最高位为符号位。

反码:符号位不变,其余按位取反。
补码:在反码基础上进行加一。

还有一个规律就是正数原码、反码,补码值相同而负数需要遵守以上规则进行变化,可以使用一个简单代码进行验证

#include<stdio.h>

int main()
{
	int i = 10;
	//原码 00000000000000000000000000001010
	int j = -10;
	//原码 10000000000000000000000000001010
	//反码 11111111111111111111111111110101
	//补码 11111111111111111111111111110110
	printf("%d\n", i);
	printf("%d", j);
	return 0;
}

在这里插入图片描述
可以清楚看见整形数据存储时是以反码形式进行的,但是这里还会发现一个问题,按照注释来解释这里数据存储顺序问题。

int i = 10;
	//原码 00000000000000000000000000001010

这里存储顺序应该是

00 00 00 0a

但是经过我们查看后发现顺序与我们想法相反。这里就不得不说到字节存储顺序·

3、大小端

什么是大端小端:

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

关于这个大小端还有一个故事;在乔纳森·斯威夫特的著名讽刺小说《格列夫游记》中,小人国内部分裂成Big-endian和Little-endian两派,区别在于一派要求从鸡蛋的大头把鸡蛋打破,另一派要求从鸡蛋的小头把鸡蛋打破。斯威夫特借以讽刺英国的政党之争,在计算机工业中指数据储存顺序的分歧。
这个便可以解释我们上面顺序问题。这里我们还可以写一个代码进行模拟实现大小端判断;

#include <stdio.h>
int check_sys()
{
 int i = 1;
 return (*(char *)&i);//强制类型转换,比较第一个字节
}
int main()
{
 int ret = check_sys();
 if(ret == 1)
 {
 printf("小端\n");
 }
 else
 {
 printf("大端\n");
 }
 return 0;
}

这里有强制类型转换,我们知道是int 类型转换为char类型。根据上面介绍这俩类型转换其实在大小方面有所区别。转换实质就是截断或者进行整形提升

整形提升:其实是小于整形的类型经过高位的补0,或1。从而达到与整形int相同字节数。

这里不同类型进行补位时,高位数据也有所不同。比如

unsigned char

无符型补0,有符号补符号位。

signed char

下面代码进行验证

int main()
{
	char a = 0xb6;
	short b = 0xb600;
	int c = 0xb6000000;
	if (a == 0xb6)
		printf("a");
	if (b == 0xb600)
		printf("b");
	if (c == 0xb6000000)
		printf("c");
	return 0;
}

二、浮点型

1、 认识浮点型

float
double
long double

既然分出来浮点型和整形就说明它们各自有不同的存储形式。浮点型有俩种float(4字节)、double(8字节)类型,我们知道的就是精度不同。但是很多时候我们就只知其然而不知其所以然。

2、存储方式

通过以下代码进行探索

int main()
{
	int n = 7;
	float* pF= (float*)&n;
	printf("n的值为:%d\n", n);
	printf("*pFloat的值为:%f\n", *pF);


	*pF = 7.0;
	printf("num的值为:%d\n", n);
	printf("*pFloat的值为:%f\n", *pF);


	return 0;
}

在这里插入图片描述
如果我们只是看代码而不进行编译,可能在看见运行结果时有一点点出入,这里和我们进行整形数据时规律不同。这里有一个** IEEE745标准**,对于浮点型数据有了一定规范。

(-1)^S * M * 2^E
(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。
M表示有效数字,大于等于1,小于2。
2^E表示指数位。

在标准规定下对于内存调用,各自占有大小进行规定。
在这里插入图片描述

在这里插入图片描述
通过对别这里我们进度问题便可以得知double精度为什么高于float。也可以解释上面代码运行结果。

[数据结构]四种数据存储结构---顺序存储 链接存储 索引存储 散列存储 顺序结构和链接结构适用在内存结构中。索引结构和散列结构适用在外存与内存交互结构。顺序存储在计算机中用一组地址连续的存储单元依次存储线性表的各个数据元素,称作线性表的顺序存储结构。特点:随机存取表中元素。插入和删除操作需要移动元素。链接存储在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。它不要求逻辑上相邻的元素在物理位置上也相邻.因此它没有顺序存储结 阅读详情

相关推荐

带有数据存储内存块的数据存储

然后,如果数据表中显示的数据存储读取或数据存储写入块引用由信号对象定义的数据存储,则该表包括与该对象对应的行。您可以在数据存储读取和数据存储写入块中使用此名称,就像它是数据存储内存块的数据存储名称一样。对于本地数据存储,对于下面列出的每个参数,您可以显式设置值,也可以让数据存储从数据存储写入和数据存储读取块继承值。数据存储名称属性指定数据存储写入和数据存储读取阻止访问的数据存储的名称。要定义仅在特定子系统及其包含的子系统中可见,但在模型块中不可见的数据存储,请将数据存储内存块拖动到子系统中。

ptw1992的博客 1485

大端与小端存储模式详解

端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian(这句话最为形象)。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big End

【拥抱变化 -- 知识改变命运】 3万+

数据存储:一文掌握存储数据到ElasticSearch详解

Elasticsearch​ 是一个基于Lucene的分布式搜索和分析引擎,具有高扩展性、实时性和强大的全文搜索能力。它广泛应用于日志分析、全文搜索、数据可视化等领域。通过以上步骤,你可以轻松地将数据存储到Elasticsearch中,并进行基本的CRUD操作。Elasticsearch是一个功能强大的搜索引擎,适用于各种场景,如日志分析、全文搜索、数据分析等。掌握这些基本操作后,你可以进一步探索Elasticsearch的高级功能,如聚合、复杂查询、索引管理等。

数据知道的博客 9413

SharedPreferences存储数据及文件数据存储

SharedPreferences存储数据及文件数据存储什么是内部、外部存储内部存储获得路径方法SharedPreferences存储外部存储获得公共目录方法文件读写 什么是内部、外部存储 内部存储 获得路径方法 context.getCacheDir() context.getFilesDir() SharedPreferences存储 public void writeShare(){ SharedPreferences sharedPreferences = getSharedP

amynn的博客 2681

基于STM32的多路火灾报警系统设计

本文设计了一款基于STM32的多路火灾报警系统,利用多个传感器组合(如烟雾传感器、温度传感器等)进行数据采集与处理,精确判断火灾情况,并及时发出报警信号,保障生命与财产安全。本系统设计了一款基于STM32的多路火灾报警系统,通过结合烟雾传感器和温度传感器,提升了火灾检测的准确性和可靠性。未来,系统可以进一步集成更多传感器,如气体传感器、湿度传感器等,进一步提升火灾报警系统的智能化水平。本系统采用STM32F103单片机作为核心处理单元,结合烟雾传感器、温度传感器和报警模块,实现多通道火灾报警功能。

stm32d1219的博客 2028

正负数据如何归一化_生信干货 | LC-MS代谢组学QI软件下机数据代谢物筛选和归一化如何做?...

上海·2019第一届多层组学前言技术发展华东区客户研讨会倒计时1天LC-MS非靶向代谢组学数据下机啦~~拿到一堆数据怎么办?不会高端代码,也不会自己写脚本,我怎么处理数据?​本期小编带来了LC-MS非靶向代谢组学下机数据处理实用干货,包括:下机定性结果表格的解析、代谢物筛选如何做?以及定量数据如何做归一化?实用干货,赶紧来抢~~话不多说,赶紧来学习吧~~非靶向LC-MS代谢组学的分析流程LC-MS...

weixin_36441329的博客 2982

Android中数据存储

文件存储,SharedPreferences存储,SQLite数据库存储,Litepal,序列化

m0_71214256的博客 2763

通过arcmap制作的第一张流域图

需要知道,识别河流依次需要填洼,流向,流量,栅格计算器,河流链接,河网分级.通过卫星图确定河流入口,在入口处画一个点,注意不要与其他河流相交。随后是进行对河流的筛选使用con函数,筛选流量大于100的河流。我们使用镶嵌工具-->镶嵌至新栅格 将两个数据合并。填洼后如图,随后进行流向的获得.使用流向工具。首先导入准备好的数据,可见两张图片并非一体。教程参考b站up:爱画地图的boney。惊醒栅格河网矢量化,进行河流分级。输入表面栅格数据,等待后如图。本次制作的是双峰县的流域图。输入流向数据,输出后如图。

pianmian1的博客 2224

大数据存储

一、云存储 1.概念:云存储是在云计算概念上的延伸和发展出来的一个新概念,是一种新兴的网络存储技术。 2.特点: 可靠性 可用性(多路径、控制器、不同的光纤网、RAID技术、端到端的架构控制/监控和成熟的变更管理过程等方案均可提高云存储可用性) 安全性 规范化 低成本 3.架构 ...

tian16的博客 1万+

【第4章 光模块实测方法总结(环境搭建、眼图测试、接收测试、注意事项)】

本文系统介绍了光模块测试的完整流程与关键要点,涵盖低速模块到3.2T PAM4超高速模块的测试方法。内容包括:1)测试环境搭建(光路/电路要求);2)核心测试项目(眼图分析、接收灵敏度/饱和测试、误码压力测试);3)PAM4专项测试(TDECQ、RLM线性度等);4)可靠性测试(温循、电压、老化);5)八大注意事项(如禁止脏端面测试、长短距混插等)。特别强调高速模块对测试环境的高敏感性,需重点关注波形质量而非单纯光功率,并需进行严格压力测试才能暴露潜在问题。

学无止境 432

【GPT】Coze使用开放平台接口-【7】Dify 比较篇

coze 用于社交,dify 用来内部构建。抛开工作流,机器人,工具,coze 最大的区别在于可以直接发布到社交媒体上。所以,coze 对操作体验上也花了不少功夫,而 dify 就专注在帮助使用者打磨工作流。coze 各个大模块之前可以联动的机制也比较多,所以侧重点各不相同。

非晓为骁的博客 7612

Hive元数据存储和表数据存储

一、相关概念 1、元数据(metadata) 元数据(Meta Date),主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及 ETL 的任务运行状态。一般会通过元数据资料库(Metadata Repository)来统一地存储和管理元数据,其主要目的是使数据仓库的设计、部署、操作和管理能达成协同和一致。 元数据包括表的属性、表的名称、表的列、分区及其属性以及表数据所...

hyj 1万+

手把手教你学pcie--用Verilog搭建PCIe控制器核心模块

PCIe控制器是硬件设计的核心模块,负责实现设备与主机之间的高速通信。本文将以Verilog语言为例,分步骤讲解如何从零构建一个简化的PCIe控制器核心模块,涵盖事务层(TLP)生成、数据链路层(DLLP)处理和物理层(PHY)接口适配。目标是为嵌入式开发者、FPGA工程师提供一个可扩展的硬件设计框架。​。

MHD0815的博客 339

Android数据的存储及存储路径

Android的每个应用程序,都有自己的可控的目录。 在Setting/Application info里面,可以看到每个应用程序,都有Clear data和Clear cache选项。 具体这些目录在哪里呢? 用adb连接上设备。如果是连接真实设备,需要有设备的root权限。 cd data/data 在这个目录下,可以看到每个应用程序都有自己的目录,目录名就是应用程序在Android...

1万+

YOLOv11改进 | Neck篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov11(全网独家创新)

本文给大家带来的最新改进是利用分层特征融合块HFFB创新yolov11的neck部分我称之为HFPN,这个模块可以融合局部特征、全局特征、中间特征将三种特征融合在一起辅助yolov11进行检测,经过我的设计分为三种可以针对大目标、小目标、标准目标的检测方式均不同,大家可以根据自己的数据集进行不同的选择,本文的内容为我独家创新。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍二、原理介绍三、核心代码四、添加方法4.1 修改一4.2 修改二4.3 修改三4.4 修改四。

Snu77的博客 5204

QT开发串口程序与单片机通讯

如果有对象对这个信号感兴趣,想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。的内容,虽然实现的功能很简单,但是QT上位机开发的步骤基本就是这些步骤,通过这个基础实例把这些套路摸透我们就可以接着进行后续更多QT程序地开发学习了。QWidget类:所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。我们上面运行的上位机都是在Qt Creator中编译运行的,如果我们需要把编写好的可执行文件发送给别人使用的话还需要进行打包。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 945

数据对齐存储

目录 计算机里面内存的数据存储结构以及为什么要边界对齐 行边界存储 结构的存储分配规则: 数据的大小端问题 参考文献 计算机里面内存的数据存储结构以及为什么要边界对齐 计算机里面的从主存的是有一个个基本的存储单元构成了,每个存储单元存储的二进制数叫做存储字长 目前一般的存储字长都是64位。同时计算机的主存都是按照字节编址,同时一般来说计算机的CPU只能访问偶数的地址 这种问...

id145的博客 6380

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

数据在内存中是如何存储的

数据在内存中是如何存储的? 大端存储,小端存储是什么?

明天总是有希望 1208

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android中的数据存储——本地存储

Android的数据存储方式 SharedPreferences数据存储 文件存储(内部储存,外部存储) SQLite数据库存储 ContentProvider储存数据 网络存储 1、 SharedPreferences是Android的一个轻量级存储工具,用于存放类似登录信息的配置信息,采用的存储结构是Key-Value的键值对方式,本质上是一个XML文件,文件位于程序的私有目录中 文件命名...

黄大大的博客 1153

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大数据的存储

大数据的存储 1.存储方式 1.1 块存储         块存储就好比硬盘一样,直接挂载到主机,一般用于主机的直接存储空间和数据库应用的存储。它分两种形式:         DAS:一台服务器一个存储,多机无法直接共享,需要借助操作系统的功能,如共享文件夹。        &nb

weixin_44231416的博客 3万+

数据存储:如何存储和恢复流程数据

1.背景介绍 数据存储是计算机科学领域中的一个重要话题,它涉及到如何有效地存储、管理和恢复数据。在现代信息时代,数据的存储和处理需求日益增长,因此了解数据存储技术和方法对于实现高效、可靠的数据处理至关重要。本文将从多个角度探讨数据存储的核心概念、算法原理、最佳实践和应用场景,并为读者提供深入的技术见解。 1. 背景介绍 数据存储是指将数据保存到持久化存储设备(如硬盘、固态硬盘、USB闪存等)...

AI天才研究院 1288

android中的存储,Android中数据存储——文件存储数据

当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢?数据存储方式Android 的数据存储有5种方式:1. SharedPreferences存储数据SharedPreferences数据存储,也叫作xml存储。这是将数据存储“data/data/程序包名/share_prefs”路径下的到xml文件中。相关连接:《And...

weixin_34532234的博客 548
上一篇: 三子棋详解
下一篇: 常见函数剖析
小鱼君
博客等级 码龄4年 530粉丝 33原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

小鱼君

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

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

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

打赏作者

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

抵扣说明:

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

余额充值