有没有想过当定义一个变量的时候,这个变量在内存中是如何存放的呢?这就涉及到数据格式中的大端模式(Big-endian)和小端模式(Little-endian)

  • 大端模式(Big-endian):高位字节存放在内存的低端地址,低位字节存放在内存的高端地址
  • 小端模式(Little-endian):低位字节存放在内存的高端地址,高位字节存放在内存的低端地址

eg1:int a = 0x12345678,a在内存中是如何保存的?

  • int型变量需要4个字节保存数据,a是4个字节的变量
  • 把 a 分为 0x12,0x34,0x56,0x78 4个部分,分别保存到4个字节中
  • 内存中,每个字节都有一个编号,这个编号就是内存的地址,所以没每个字节都有一个地址
  • a 需要占据4个字节,就会占据4个地址,这4个地址也是从低地址变化到高地址

若 a 变量中高字节(0x12)保存在低地址,则是大端模式
若 a 变量中低字节(0x78)保存在低地址,则是小端模式

如图,假设起始地址为0x4000
大端模式(Big-endian):

内存地址

0x4000 0x4001 0x4002 0x4003
存放内容 0x12 0x34 0x56 0x78

小端模式(Little-endian):

内存地址

0x4000 0x4001 0x4002 0x4003
存放内容 0x78 0x56 0x34 0x12

eg2:使用程序判断CPU是大端还是小端

#include<stdio.h>
int main()
{union w{int  a;char b;} c;c.a = 0x12345678;printf("%x\n",c.b);}

打印结果为:78

我使用的是Linux系统编写的程序,由此可以看出此CPU为小端模式

分析:联合体所有成员占用同一段内存,修改一个成员会影响所有成员,给联合体的 a 赋值,但 a 和 b 的类型不同,从而轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。

数据格式:大端模式(Big-endian)和小端模式(Little-endian)相关推荐

  1. ARM的大端格式big endian、小端格式little endian和字word

    1.大小端格式的定义 在ARM体系结构的数据存储格式中,将4字节定义为一个字(Word),2字节定义为半字. 例如从0地址开始存放字数据,0号字节到3号字节放置第一个字数据,从第4号字节到第7字节放置 ...

  2. 大端模式(big endian)和小端模式(little endian)

    大端模式 所谓的大端模式(big endian),是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理 ...

  3. 大小端模式,stm32采用小端模式

    存储模式: 小端:较高的有效字节存储在较高的存储器地址,较低的有效字节存储在较低的存储器地址. 大端:较高的有效字节存储在较低的存储器地址,较低的有效字节存储在较高的存储器地址. STM32 属于小端 ...

  4. Big Endian(大端)和 Little Endian(小端)模式

    文章目录 1.字符表示(编码) 2.什么是字节序 3.大小端模式的区别 举个例子 如何 C 编程判断CPU是大端还是小端模式 例题一 例题二:大端模式向小端模式发送数据 4.字节序转换函数 核心就是: ...

  5. 大端模式与小端模式的理解以及判断方法

    1. 为什么会有大端模式和小端模式 在计算机中,我们知道数据是按照字节存储的,如果数据都是单字节存储,就不涉及存储顺序的问题.但是,大多数情况下,数据不是按照单字节的方式存储的,例如会有类似于int, ...

  6. 计算机中的大端模式与小端模式

    1.小端模式 小端模式:数据的高字节保存在内存的高地址中:数据的低字节保存在内存的低地址中.默认使用小端模式 2.大端模式 大端模式:数据的高字节保存在内存的低地址中:数据的低字节保存在内存的高地址中 ...

  7. C语言之大端模式与小端模式

    大端模式与小端模式的定义(字节序) 大端模式:数据的高字节在低地址,低字节在高地址 小端模式:数据的高字节在高地址,低字节在低地址 怎么判断系统是大端模式和小端模式 首先来看两个知识点: (1)联合体 ...

  8. 【Linux网络编程】大端模式和小端模式

    00. 目录 文章目录 00. 目录 01. 概述 02. 示例分析 03. 优缺点 04. 数组存储 05. 测试机器模式 07. 附录 01. 概述 大端模式(Big-endian):高位字节排放 ...

  9. 计算机是小端模式,计算机内的大小端模式

    一.什么是大端与小端模式? 大端模式英文叫Big-Edian,小端模式英文叫little-Endian. 简单说: 大端模式:低字节存放在内存的低地址,高字节存放在内存的高地址(跟我们的一般思维相一致 ...

最新文章

  1. 西北工业大学21计算机考研,西北工业大学2018年计算机考研879专业综合考试大纲...
  2. 四川大学c语言期末试题答案,四川大学计算机学院2005级C语言程序设计试卷(2份,有答案)...
  3. axios nodejs 上传图片_Vue Axios跨域、文件上传
  4. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(一)
  5. 关于硕士研究生的几点思考
  6. 游戏用户体验指标_电子游戏如何超越游戏化的用户体验
  7. c语言lr分析器的设计与实现_[源码和文档分享]基于有限自动机的词法分析器构造...
  8. c语言动态指针数组--一种伪二维数组
  9. Android studio 4.0 Layout Inspector查看当前Activity
  10. linux安装vmd软件步骤,科学网-VMD (linux下分子可视化软件)-刘雪静的博文
  11. Eat Doug吃豆豆小游戏纯js代码
  12. 复活Java 前言
  13. BRITS: Bidirectional Recurrent Imputation for Time Series(时间序列的双向递归填补)论文详解
  14. 【方向盘】程序人生 | 春风得意马蹄疾,一日看尽长安花
  15. 物联网操作系统软件定时器
  16. linkMap深度解析
  17. 心田花开教学让你快速掌握心田上的百合花写法与修辞手法运用
  18. 戴老师论文阅读:Two-Timescale Channel Estimation for Reconfigurable Intelligent Surface Aided Wireless...
  19. 杭电ACM2026题
  20. TypeScript 踩坑之 TS7053

热门文章

  1. 09 Softmax回归
  2. 推荐9个适合Python开发的IDE。
  3. 实验二、贪吃蛇的游戏开发
  4. mysql 截断日期_数据截断:错误的日期时间值:“
  5. dw选项卡代码_Dreamweaver 中的 Spry 选项卡 Tabbed Panels 自定义外观的一些细节
  6. java 房贷计算器代码_用JAVA编程一个房贷计算器
  7. MySQL软件多次安装失败解决方案
  8. microduino与onetnet测试
  9. Microduino王镇山:将物联网带进课堂
  10. pycharm---更改背景颜色