「C/C++ 01」大小端字节序

news2024/10/6 8:39:59

目录

一、什么是大小端字节序? 

二、为什么会出现大小端之分?

三、实际应用

四、如何区分当前机器是大端还是小端?

1. 用代码来区分

2. 通过VS编译器的监视窗口和内存窗口


一、什么是大小端字节序? 

  • 字节序 :是指二进制数的数位(高位在左,低位在右)保存在地址中的方法。
  • 大端字节序 :把二进制数的高位字放在低地址的保存方法。
  • 小端字节序 :与大端字节序相反。

记忆口诀:大低高,小低低(小弟弟)

或者记忆:一个二进制数放入由低到高的地址时,看起来和原来不一样的就是小端。

【举例】比如二进制数 0x12 34 56 78在内存中的表示形式为:

  1. 大端模式:
    低地址 -----------------> 高地址
    0x12  |  0x34  |  0x56  |  0x78
  2. 小端模式:
    低地址 ------------------> 高地址
    0x78  |  0x56  |  0x34  |  0x12

二、为什么会出现大小端之分?

       主要是由底层硬件体系结构的设计选择引起的,有的设计师认为大端更符合人类的阅读习惯;而有的设计师则认为小端从低地址到高地址能不经转换直接读出一个数字,效率更高。

       总的来说:大端存储更符合人类的阅读习惯;小端存储效率更高。

三、实际应用

  • 网络传输:在TCP/IP协议栈中,网络字节序通常被定义为大端字节序,这是为了保证在不同系统之间传输数据时的一致性。
  • 文件系统:不同的文件系统可能有不同的字节序要求,但在同一个系统中,文件系统通常与CPU的字节序保持一致。
  • CPU架构:不同的CPU架构可能使用不同的字节序。例如,Intel的x86系列CPU使用的是小端字节序,而Motorola的某些CPU则使用大端字节序。

四、如何区分当前机器是大端还是小端?

1. 用代码来区分

// 如何判断当前机器是大端还是小端?
#include<iostream>
using namespace std;

int main()
{
	int a = 0x0000000000000001; //a = 1的二进制表示。
	// 如果机器是大端,低地址保存高数位的字节,&a的第一个字节保存0x000即数字0
	// 如果机器是小端,低地址保存低数位的字节,&a的第一个字节保存0x001即数字1
	// 让指针p1指向整型变量a的第一个字节的地址
	char* p1 = (char*)&a;
	// 让指针p2指向整型变量a的第二个字节的地址
	char* p2 = (char*)&a+1;
	cout << (int)*p1 << endl; //ASCII码为1的字符无法被打印出来,转为整型来打印
	cout << (int)*p2 << endl; 
	// 通过判断a最低位地址中保存的数据来判断当前机器的大小端。
	if (*p1 == 1)
		cout << "当前机器是小端字节序。" << endl;
	else
		cout << "当前机器是大端字节序。" << endl;
	return 0;
}

 

2. 通过VS编译器的监视窗口和内存窗口

a. 打开监视窗口

按下F10开启调试模式 —> 选择导航栏的调试按钮 —>  选择窗口 —> 选择监视 —> 选择任意窗口。

b. 获取变量地址

在监视窗口中输入 &变量名 来获取变量地址。

 

c. 打开内存窗口

一样的步骤:

d. 在内存窗口中输入变量的地址


通过VS编译器的监视窗口和内存窗口可观察到,博主的电脑以小端字节序存储数据。


------------------------END-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

8. 文本三剑客之sed

文章目录 8.1 介绍8.1.1 工作流程8.1.2 命令格式 8.2 sed 使用8.2.1 查找/打印8.2.2 添加8.2.3 修改8.2.4 删除 8.3 保存操作后的内容 8.1 介绍 sed编辑器被称作流编辑器&#xff08; stream editor&#xff09;&#xff0c;和普通的交互式文本编辑器恰好相反。在交互式文本编…

win10打开共享设置

win10打开共享设置

themleaf 页面弹层取值

themleaf 页面弹层取值 创作背景themleaf页面事件onbluronclick 页面参数提交 创作背景 个人在日常开发中&#xff0c;遇到了一个需求页面&#xff0c;页面交互较多&#xff0c;用到的事件也很丰富&#xff0c;特此记录&#xff0c;方便后续查找也方便有需要的开发者采用&…

chrome浏览器设置--disable-web-security解决跨域

在开发人员于后台进行接口测试的时候&#xff0c;老是遇到跨域问题&#xff0c;这时前端总是会让后台添加跨域请求头来允许跨域请求&#xff0c;今天介绍一个简单的方法跨过这一步操作的设置。 –disable-web-security参数&#xff0c;禁用同源策略&#xff0c;利于开发人员本…

Postman 请求参数传递指南:Query、Path和Body

Postman 作为一个功能强大的工具&#xff0c;极大地简化了 API 测试和调试的过程&#xff0c;提供了发送请求和检查响应的直接方法。本文将着重介绍如何在 Postman 中高效地处理请求参数&#xff0c;以提高 API 测试和开发的便利性。 1、解析请求参数 首先&#xff0c;我们需要…

2024最值得入手的骨传导耳机有几款?年度精选五款骨传导耳机分享

作为一个爱好运动的人来说&#xff0c;现在天气越来越暖和了&#xff0c;很多人选择外出徒步、越野或者骑行。在运动过程中都会佩戴一些入耳式耳机&#xff0c;但是运动一段时间发现入耳式耳机带久了耳朵会很不舒服&#xff0c;而且出汗了的话对于一些不防水的入耳式耳机的话&a…

硕思LOGO设计师软件最新版下载及详细安装教程

硕思Logo设计师是一款操作灵活简单&#xff0c;且功能强大的logo制作软件。它可以通过简单的点击就可以为网站、博客、论坛和邮件创建专业的logo、条幅、按钮、标题、图标和签名等。 该软件提供了很多精心设计的模板和丰富的资源&#xff0c;为更好的创建logo艺术作品&#xff…

博物馆藏品管理的重要性

博物馆是人们了解历史文化、传承文明的重要场所。而博物馆的藏品管理是博物馆的核心工作之一&#xff0c;对于展现博物馆的魅力、吸引观众的眼球有着至关重要的影响。并且博物馆藏品管理是一项复杂且专业的工作&#xff0c;它涉及到多个方面&#xff0c;包括但不限于藏品的收集…

DDPM公式推导(一)

去噪扩散概率模型 Title:Denoising Diffusion Probabilistic Models paper是UC Berkeley发表在NIPS 2020的工作 paper地址 Abstract 我们使用扩散概率模型&#xff08;一类受非平衡热力学启发的潜在变量模型&#xff09;展示了高质量的图像合成结果。根据扩散概率模型与采用La…

AI大模型的应用远比你想像的要简单—人人都是程序员

2022年底OpenAI发布了语言大模型chatgpt3.5&#xff0c;它能像人一样跟我们聊天&#xff0c;从此AI市场着了大火&#xff0c;国内外各个顶级科技公司纷纷跟进&#xff0c;出现了一大批的AI大模型&#xff0c;比如文心一言&#xff08;百度&#xff09;、Gemini&#xff08;谷歌…

Python 使用print输出二进制文件时产生的错位

项目实践中&#xff0c; with open(fileName, rb) as f: result f.read()print(result)f.close()打开二进制文件&#xff0c;打印出的结果会出现有些\x后面有好几个字符的情况 但实际这串数字是 这种情况是因为print函数将二进制数据解释为字符串并以其字节值的十六进制表…

中电金信:GienTech动态|中标、入选、参会...近期精彩呈现!

中电金信参编业内首个银行核心系统分级度量标准 2024年6月6日&#xff0c;由中国信息通信研究院云计算与大数据研究所主办的“应用现代化赋能银行核心系统升级”交流会议在京召开。会议发布了业内首个银行核心系统分级度量标准《银行核心系统现代化建设水平度量模型》&#xf…

视频字幕提取工具怎么使用?不妨看看这些教程

在探索学习设备使用的过程中&#xff0c;视频教程扮演着极其重要的角色。 但是&#xff0c;我们可能会遇到一些挑战&#xff0c;比如长视频教程的观看效率不高&#xff0c;信息量大难以快速定位到关键点&#xff0c;或者有些人更喜欢阅读文字而非观看视频来学习。 为解决这一…

前沿重器[49] | 聊聊搜索系统2:常见架构

前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享&#xff0c;从中抽取关键精华的部分和大家分享&#xff0c;和大家一起把握前沿技术。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。&#xff08;算起来&#xff0c;专项启动已经…

GPT4,你能做什么详细告诉我可以么?

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

三个pdf工具和浏览软件(pdftk,muppdf,epdfview)

安装pdftk pdftk是一款功能强大的PDF处理工具&#xff0c;主要用于对PDF文件进行各种操作。它提供了丰富的功能&#xff0c;包括但不限于合并、拆分、旋转、加密、解密、添加水印、从PDF文档中解出附件等。pdftk分为图形界面版本和命令行版本&#xff0c;适用于不同的用户需求…

HTML入门教程:深度解析HTML,开启你的前端技术之旅

一、引言 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是前端开发的基础&#xff0c;它负责构建网页的结构和内容。作为前端技术栈的基石&#xff0c;HTML的掌握程度直接影响到网页的开发效率和用户体验。本教程将带你从零开始&#xff…

算法体系-22 第二十二节:暴力递归到动态规划(四)

一 最小距离累加和 1.1 描述 给定一个二维数组matrix&#xff0c;一个人必须从左上角出发&#xff0c;最后到达右下角 沿途只可以向下或者向右走&#xff0c;沿途的数字都累加就是距离累加和 返回最小距离累加和 1.2 分析

【安卓】在安卓中使用HTTP协议的最佳实践

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

OpenCV图像变换

一 图像的缩放 resize(src,dst,dsize,fx,fy,interpolation) fx&#xff1a;x轴的缩放因子 fy&#xff1a;y轴的缩放因子 interpolation 插值算法 INTER_NEAREST,临近插值&#xff0c;速度快&#xff0c;效果差 INTER_LINEAR,双线性插值&#xff0c;原图中的4个点 INTER_CUBIC…