大小端解释以及如何使用程序判断IDE的存储模式

        今天让我们来了解一下大小端的概念吧

        什么是大小端?

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

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

        我们使用画图来给大家解释一下

        大端

        

        我们来看看这个图,数据使用16进制的方式储存,当我们开辟出内存空间的地址之后,图中从左到右是低地址到高地址,我们按照大端存储方式存储数据的时候会将高位存储在低地址处,低位存储在高地址处,这样我们看数据由低地址到高地址就是和原数据一样的顺序。

        小端

        

        我们再来看看小端存储模式,与大端存储不一样的地方是,唉,大家发现存储的数据反过来了,对的,这就是小端存储模式,他将我们低位的数据存储在内存的低地址,高位的数据存储在内存的高地址,这样我们在内存中看数据就会产生数据是倒着的感觉。

        vs2022中的存储模式

        好啦,了解了大小端之后,大家是不是有点好奇我们使用的IDE是使用的哪种存储方式呢,我们打开vs2022,创造一个整型变量a来看看吧。

        

        通过调试,我们调出a的内存,可以看到在内存中a的存储是01 00 00 00,它的低地址01 存储在了内存的低地址上,所以我们vs2022IDE环境中使用的是小端存储方式。

        

        内存改为一列就可以更清晰的看到,在地址0x00DEFE60中是01,0x00DEFE61中是00,01是数据的低位,存储在了低地址中,这样是不是就清晰明了了。

        使用代码判断IDE的存储模式

        现在我们尝试使用一个代码来判断我们的IDE环境是大端存储方式还是小端存储方式吧

        代码展示

        

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int a = 1;
	char* p = (char*)&a;
	if (*p == 1)
	{
	    printf("小端");
	}
	else
	{
		printf("大端");
	}
	return 0;
}

        代码解析

        我们知道了大小端的概念之后就很容易写出判断大小端的代码了,我们首先定义一个变量a,之后我们只需要取内存中第一个字节来判断,如果内存中第一个字节是00,那么这个环境是大端存储方式,如果第一个字节是01,那么这个环境是小端存储方式。

        我们如何在一个整型数据中准确找出他的第一个字节的数字呢,我们只需要将a强制转化成char类型就好,我们通过指针的方式,我们首先定义一个char类型的指针变量p,在指针p中存放char类型指针a的内容,就是将a的地址的内容传给*p,之后通过*p判断系统是大端存储还是小端存储。

        当然还可以通过函数的方式来判断

        代码展示

        

int infer_sys()
{
	int a = 1;
		return *(char*)&a;
}
int main()
{
	int ret = infer_sys();
	if (ret == 1)
	{
		printf("小端");
	}
	else
	{
		printf("大端");
	}
	return 0;
}

        代码解析

        在这个代码中,我们使用函数的方式来判断系统是大端存储还是小端存储,我们直接来看到函数,之前我们了解到我们只需要找到整型变量a的第一个字节的内容就可以完成对程序大小端的判断,那么现在我们是不是可以直接找到变量a第一个字节的地址,之后对它进行解引用,那么这样我们也可以找到内存中a的第一个字节的值,之后来判断。

        我们定义函数infer_sys,用来判断我们大小端,给函数一个返回值使用ret来接收,返回1,我们认为系统是小端存储,返回0,系统是大端存储。

        那么我们这里函数的返回值就是int类型了,在定义变量a=1之后,我们只需要找到a内存中的第一个字节的内容,之后将存储内容返回就可以成功判断大小端了。

        运行结果

        

        与我们判断结果一样,我们使用的vs2022的存储方式是小端存储。

        今天就到这里喽,继续加油加油!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/568382.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

jvm中的垃圾回收器

Jvm中的垃圾回收器 在jvm中&#xff0c;实现了多种垃圾收集器&#xff0c; 包括&#xff1a; 1.串行垃圾收集器 2.并行垃圾收集器 3.CMS&#xff08;并发&#xff09;垃圾收集器 4.G1垃圾收集器 1.串行垃圾回收器 效率低&#xff0c;使用较少 2.并行垃圾回收器 3.并发垃圾回…

InternLM2-lesson3作业+笔记

茴香豆 https://www.bilibili.com/video/BV1QA4m1F7t4/?vd_source902e3124d4683c41b103f1d1322401fa 一、笔记 RAG RAG(Retrieval Augmented Generation)是一种结合了检索(Retrieval)和生成(Generation)的技术&#xff0c;旨在通过利用外部知识库来增强大预言模型的性能。…

ctfshow web入门 web180--web185

web180 import requests import recom re.compile("admin") def repisTrue(char):url f"http://自己环境的网址/api/?id1%27and%27{char}%27%27{char}&page1&limit10"res requests.get(url)w com.search(res.text)if w is not None:return T…

windows系统下python开发工具安装

一. 简介 前一篇文章学习了安装 python解释器&#xff0c;文章如下&#xff1a; windows系统下python解释器安装-CSDN博客 本文来学习如何下载安装 python开发工具 PyCharm。 二. python开发工具 PyCharm下载安装 1. PyCharm官网 PyCharm开发工具 PyCharm为 python代码…

自制Apache-Doris 2.0.4镜像Docker部署一Fe和一Be集群及遇到的问题解决

自制Apache-Doris 2.0.4镜像Docker部署一Fe和一Be集群及遇到的问题解决 文章目录 1.前言2.doris是什么&#xff1f;2.1简介2.2介绍2.3使用场景2.4架构 3.官网4.构建部署4.1 构建环境4.2 doris2.0.4的fe和be镜像构建4.2.1 fe2.0.4镜像构建脚本4.2.2 be2.0.4镜像构建4.2.3 启动脚…

Linux 操作系统的引导过程

Linux系统开机引导过程&#xff1a; 开机自检 检测硬件设备&#xff0c;找到能够引导系统的设备&#xff0c;比如硬盘MBR引导 运行MBR扇区里的主引导程序GRUB启动GRUB菜单 系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和…

centos7+mysql57安装以及初始化

1、下载安装yum官方mysql源&#xff1a; http://repo.mysql.com/ ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/061472a86e9e4548b76d4603d4614568.png rpm -ivh mysql57-community-release-el7.rpm2、yum安装mysql服务 yum install -y mysql-community-server…

深兰科技入选2024全国“人工智能+”行动创新案例TOP100

近日&#xff0c;中科院《互联网周刊》联合eNET研究院、德本咨询、中国社会科学院信息化研究中心共同发布了《2024全国“人工智能”行动创新案例TOP100》榜单。经评委会层层遴选&#xff0c;深兰科技专为洛阳市打造的“工业智能化洛阳中心”项目成功入围该榜单。一同入围的还包…

Threejs 相机定位聚焦

网上大部分讲功能的时候&#xff0c;讲的太复杂了&#xff0c;或者就是讲不清&#xff0c;今天我就给大家简单简洁的描述下这个聚焦定位咋做如下&#xff1a; 扫码关注下&#xff1a; 聚焦定位只要就是设置相机的位置&#xff0c;和更新相机的朝向&#xff0c;就如一个人站在这…

2024三掌柜赠书活动第二十四期:containerd原理剖析与实战

目录 前言 Containerd的架构 Containerd的工作流程 Containerd的实战演示 关于《containerd原理剖析与实战》 编辑推荐 内容简介 作者简介 图书目录 书中前言/序言 《containerd原理剖析与实战》全书速览 结束语 前言 作为开发者&#xff0c;对于编程语言并不陌生&…

Atlas Vector Search:借助语义搜索和 AI 针对任何类型的数据构建智能应用

Atlas Vector Search已正式上线&#xff01; Vector Search&#xff08;向量搜索&#xff09;现在支持生产工作负载&#xff0c;开发者可以继续构建由语义搜索和生成式人工智能驱动的智能应用&#xff0c;同时通过 Search Node&#xff08;搜索节点&#xff09;优化资源消耗并…

Android—— log的记忆

一、关键log 1.Java的 backtrace(堆栈log) 上述是一个空指针异常&#xff0c;问题出现在sgtc.settings&#xff0c;所以属于客户UI问题。 2.WindowManager(管理屏幕上的窗口和视图层次结构) 3.ActivityManager(管理应用程序生命周期和任务栈) 4.wifi操作 (1) 连接wifi&#…

2024深圳杯数学建模挑战赛C题:编译器版本的识别问题思路代码成品论文分析

更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓ https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 问题重述 深圳杯数学建模挑战赛2024C题&#xff1a;编译器版本的识别问题 作为一种重要的工具&#xff0c;电子…

【后端】python2和python3的安装与配置

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、python是什么二、python环境的安装与配置Python 2的安装与配置Python 3的安装与配置注意事项 三、总结 前言 随着开发语言及人工智能工具的普及&#xff0…

信息打点--公众号服务

微信公众号 获取微信公众号的途径https://weixin.sogou.com/ 微信公众号没有第三方服务 Github监控 人员&域名&邮箱 eg&#xff1a;xxx.cn password in:file https://gitee.com/ https://github.com/ https://www.huzhan.com/ 资源搜索 in:name test 仓库标题搜索含有…

Linux--内核移植(二)移植流程及驱动修改

本文来总结一下如何将 NXP 官方提供的 Linux 内核移植到正点原子的 I.MX6U-ALPHA 开发板上。 一、官方开发板内核测试 NXP 提供的 Linux 源码肯定是可以在自己的 I.MX6ULL EVK 开发板上运行下去的&#xff0c;所以我们肯定是以 I.MX6ULL EVK 开发板为参考&#xff0…

DFS与回溯专题:路径总和问题

DFS与回溯专题&#xff1a;路径总和问题 一、路径总和 题目链接&#xff1a; 112.路径总和 题目描述 代码思路 对二叉树进行dfs搜索&#xff0c;递归计算每条路径的节点值之和&#xff0c;当某个节点的左右子节点都为空时&#xff0c;说明已经搜索完成某一条路径&#xff0…

中北大学软件学院操作系统实验二进程调度算法

实验时间 2024年 4 月13日14时至16时 学时数 2 1.实验名称 实验二进程调度算法 2.实验目的 (1)加深对进程的概念及进程调度算法的理解&#xff1b; (2)在了解和掌握进程调度算法的基础上&#xff0c;编制进程调度算法通用程序&#xff0c;将调试结果显示在计算机屏幕上&am…

Android Perfetto 监控应用启动耗时

Perfetto 是一个 Google 开发的用于安卓系统性能监控和调试的工具&#xff0c;它旨在提供实时数据收集和可视化功能&#xff0c;帮助我们分析和优化应用程序的性能表现。Perfetto 可以捕获系统事件、CPU、内存、网络、GPU 等性能指标数据&#xff0c;并将其记录为轻量级的 Trac…

BBS前后端混合项目--03

展示 static/bootstrp # bootstrap.min.css /*!* Bootstrap v3.4.1 (https://getbootstrap.com/)* Copyright 2011-2019 Twitter, Inc.* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)*//*! normalize.css v3.0.3 | MIT License | github.com/n…