谈一谈大小端

文章目录

  • 一,什么是大小端
  • 二,为什么有大小端
  • 三,怎么验证大小端

一,什么是大小端

大端存储模式:是指数据的地位存储在高地址处,数据的高位存储在低地址处。
小端存储模式:是指数据的低位存储在低地址处,数据的高位存储在高地址处。

二,为什么有大小端

在计算机系统中,我们以字节为最基本的存储单位,每个字节对应着一个地址单元,那么当有一字节以上的数据时,就有了数据存储顺序的问题,数据的低位存储在高地址还是低地址?数据的高位存储在高地址还是低地址?因此就有了大小端之分。
在这里插入图片描述

在早期, CPU 只有几千个逻辑门,小端的方式能更有效的使用逻辑电路,所以很多计算机内部计算都采用小端的方式,这种方式也就保留到了现在。
另外,字节序是跟 CPU 架构相关,不同的厂家设计的规范可能都不一样,比如 Intel 的 x86 是小端方式,而 IBM 的 PowerPC 则采用大端。
大端的方式更符合人们的阅读习惯,因此大部分网络传输以及文件存储都是大端的方式
总的来说,小端主要是在计算机内部使用,大端则在外部使用。

三,怎么验证大小端

我们简单的了解了什么是大小端之后,就要去验证我们的机器到底是大端还是小端
。我们知道联合体中,其成员变量是共享最大变量的空间的,因此我们可以用联合体来验证大小端。其具体实现如下:

union A
{int a;char b;
};
int main()
{A aa;aa.a = 0x1112233;if (aa.b == 0x33){cout << "小端" << endl;}else{cout << "大端" << endl;}return 0;
}

在这里插入图片描述

联合体中变量a和b共同占用4字节,因此向a中写入数据,用b去读取时,由于b是char类型,一次读一字节,计算机读取数据的时候是不区分字节序的,它总是从内存低地址到高地址的顺序,按字节读取,因此若读出来是我们写入数据的低位则是小端,否则是大端。

int main()
{int a = 0x11223344;if (*((char*)&a) == 0x44){printf("小端模式\n");}else{printf("大端模式\n");}return 0;
}

在这里插入图片描述

将一个4字节整型,通过取地址找到其在计算机中的存储位置,这个位置中存储着a的数据,再将这个地址指针强转为char类型,因此号前面的类型决定了在内存中读取数据的大小,char是一字节,所以我们解引用后就读到了a的第一个字节,在根据此判断其值是否为a的低位,若是,则是小端,否则是大端。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go 谈论了解Go语言

一、引言 Go的历史回顾 Go语言&#xff08;通常被称为Go或Golang&#xff09;由Robert Griesemer、Rob Pike和Ken Thompson在2007年开始设计&#xff0c;并于2009年正式公开发布。这三位设计者都曾在贝尔实验室工作&#xff0c;拥有丰富的编程语言和操作系统研究经验。Go的诞生…

在很多nlp数据集上超越tinybert 的新架构nlp神经网络模型

在很多nlp数据集上超越tinybert 的新架构nlp神经网络模型 网络结构图测试代码网络结构图 测试代码 import paddle import numpy as np import pandas as pd from tqdm import tqdmclass FeedFroward(paddle.nn.Layer):

优化器原理——权重衰减(weight_decay)

优化器原理——权重衰减&#xff08;weight_decay&#xff09; weight_decay的作用 原理解析 实验观察 在深度学习中&#xff0c;优化器的 weight_decay 参数扮演着至关重要的角色。它主要用于实现正则化&#xff0c;以防止模型过拟合。过拟合是指模型在训练数据上表现优异&…

【海思SS528 | VDEC】MPP媒体处理软件V5.0 | VDEC的使用总结

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Could NOT find resource [logback-test.xml]

修改 之后就可以正常启动了

连接备份1128

深度学习—分类识别篇&#xff1a;http://tr.daheng-imaging.com/watch/1050636http://tr.daheng-imaging.com/watch/1050636 深度学习—目标检测篇&#xff1a;http://tr.daheng-imaging.com/watch/1101141http://tr.daheng-imaging.com/watch/1101141 深度学习—缺陷分割篇&a…

JRT实现缓存协议

上一篇介绍的借助ORM的增、删、改和DolerGet方法&#xff0c;ORM可以很精准的知道热点数据做内存缓存。那么就有一个问题存在&#xff0c;即部署了多个站点时候&#xff0c;如果用户在一个Web里修改数据了&#xff0c;那么其他Web的ORM是不知道这个变化的&#xff0c;其他Web还…

案例,linux环境下OpenCV+Java,实现证件照在线更换背景色

先看效果&#xff08;图片来自网络&#xff0c;如有侵权&#xff0c;请联系作者删除&#xff09; 主要是通过java实现的&#xff0c;linux环境编译安装opencv及证件照背景色更换的核心算法在前面一篇文章中有写到。 目前算法还有瞎呲&#xff0c;当照片光线不均的时候会出现误…

nginx: [alert] could not open error log file

先把cmd的报错信息粘出来 nginx: [alert] could not open error log file: CreateFile() “logs/error.log” failed (3: The system cannot find the path specified) 2023/11/29 11:27:37 [emerg] 5040#18772: CreateDirectory() “D:\enviroment\nginx-1.24.0\conf/temp/cli…

Python GUI编程:dearpygui和tkinter的对比与选择详解

概要 随着Python在GUI(图形用户界面)编程中的不断发展&#xff0c;出现了许多优秀的库&#xff0c;如dearpygui和tkinter。 这两个库在许多方面都有所不同&#xff0c;不仅是在功能方面&#xff0c;还在设计哲学和用途上。 本文将对比这两个库&#xff0c;并使用Python代码举…

burp2023专业版,配置上游代理太难找

burpsuite2023专业版的工具栏与之前的版本不同的是&#xff0c;工具栏中没有了user options这一选项 但在通常的使用过程中&#xff0c;常用到配置上游代理。之前的版本呢&#xff0c;上游代理的配置都在user options选项中设置&#xff0c;user options选项还在工具栏中&#…

从意义中恢复,而不是从数据包中恢复

从书报&#xff0c;录放机&#xff0c;电视机到智能手机&#xff0c;vr 眼镜&#xff0c;所有学习的&#xff0c;娱乐的工具或玩具&#xff0c;几乎都以光声诉诸视听&#xff0c;一块屏幕和一个喇叭。 视觉和听觉对任何动物都是收发信息的核心&#xff0c;诉诸视觉和听觉的光和…