关于大、小端的那些事

简介: 关于大、小端的那些事

什么是大、小端


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

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


图解


我们知道,在内存中数据的存储及计算都是通过转化为二进制来进行的,为了方便我们直观感受电脑都会转化为16进制来表示出来,如下图:


d1afd090579a656ab56c7e20c32d239d_8f7a949aef28409b8e67316ed8796dfd.jpg


我们可以看出它是字节为单位来存储的(一个 int 型有4个字节,一个字节八个比特位,4个比特位存储一个十六进制的数)低位的44存在地址:0x00CFFBF0处,高位的11存在0x00CFFBF3处,这就是小端字节序存储。


大、小端存储模式如下图:


8778f9b8204f49298ea5652dcf5932c0_ebc0f812bb7b47e1a6e4a181a1570356.jpg


如何用代码来测试当前机器的字节序?


假设用 1 来测试,那么写成 16 进制就是 0x00000001,我们假设它是小端字节序存储,那么由之前的分析可以得出,地址由低到高第一个字节存储的应该是01,大端则为00.

由此,我们可以写出如下代码:


#include<stdio.h>
int main()
{
  int a = 1;
  char* p = (char*)&a; //强制类型转换,&a本为int*类型,转为char*型
  if (*p == 1)         //这样就能解引用访问第一个字节
  printf("小端");
  else
  printf("大端");
  return 0;
}


我们还可以简化一下,如下:


#include<stdio.h>
int main()
{
  int a = 1;
  if (*(char*)&a == 1)     //转换完直接解引用
  printf("小端");
  else
  printf("大端");
  return 0;
}


以上便是本期内容了,希望对您有所帮助,如有错误还请大佬指正。


相关文章
|
7月前
|
搜索推荐 API 对象存储
10分钟学会构建端到端的图片搜索服务
本文介绍在没有向量数据的情况下,怎样通过OpenSearch-向量检索版快速从零搭建图像搜索服务。
82972 69
|
5月前
|
消息中间件 监控 中间件
端到端的EOS支持
端到端的EOS支持
|
8月前
|
SQL 存储 监控
构建端到端的开源现代数据平台
构建端到端的开源现代数据平台
450 4
|
8月前
|
消息中间件 Web App开发 监控
mqtt数据问题之如何实现webRTC 协议的监控视频压测
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
157 0
|
8月前
|
自动驾驶 安全 网络安全
6G 移动通信网络端到端的技术需求指标
6G 移动通信网络端到端的技术需求指标
295 0
|
存储 传感器 监控
探密工业互联网网络体系:构建端到端的稳定传输
什么是工业互联网网络? 工业互联网网络是一种将工业设备、传感器和计算机系统连接到一起,以便它们可以共同工作、共享数据和实现更高效的生产和控制。这个网络体系的目标是提高工业过程的效率、可靠性和安全性。
|
Web App开发 视频直播
浏览器跨标签页通信、双向数据传输、实时通信有什么区别?
浏览器跨标签页通信、双向数据传输、实时通信有什么区别?
94 0
|
Web App开发 存储 编解码
WebRTC 的连接过程
经过前面几部分的铺垫,你应该对P2P音视频互动的过程有了一个大概的了解,有可能你会觉得过程比较繁琐,甚至涉及到了网络底层。但是,不要担心,WebRTC已经帮我们做了很多的事情,让我们在音视频开发时变得轻而易举。那么WebRTC到底是什么呢?
277 0
|
前端开发 Android开发
仅接收服务器数据的长链接方案
仅接收服务器数据的长链接方案
298 0
仅接收服务器数据的长链接方案
|
Web App开发
浅析WebRtc中视频数据的收集和发送流程
本文是基于PineAppRtc开源项目github.com/thfhongfeng… 因为一个需求,我们需要将一个视频流通过WebRtc发送出去,所以就研究一下WebRtc是如何采集视频数据并进行处理发送的,于是有了这篇文章。
475 0