网站首页 > 文章精选 正文
01. 概述
大端模式(Big-endian):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端,即正序排列,高尾端;
小端模式(Little-endian):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端,即逆序排列,低尾端;
例(无论是小端模式还是大端模式。每个字节内部都是按顺序排列):
- 大端模式:
低地址 -----------------> 高地址
0x0A | 0x0B | 0x0C | 0x0D
- 小端模式:
低地址 ------------------> 高地址
0x0D | 0x0C | 0x0B | 0x0A
02. 示例分析
16bit宽的数0x1234在两种模式CPU内存中的存放方式(假设从地址0x2000开始存放)为:
内存地址 | 小端模式存放内容 | 大端模式存放内容 |
0x2000 | 0x34 | 0x12 |
0x2001 | 0x12 | 0x34 |
32bit宽的数0x12345678在两种模式CPU内存中的存放方式(假设从地址0x2000开始存放)为:
内存地址 | 小端模式存放内容 | 大端模式存放内容 |
0x2000 | 0x78 | 0x12 |
0x2001 | 0x56 | 0x34 |
0x2002 | 0x34 | 0x56 |
0x2003 | 0x12 | 0x78 |
03. 优缺点
大端小端没有谁优谁劣,各自优势便是对方劣势:
小端模式 :
强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
大端模式 :
符号位的判定固定为第一个字节,容易判断正负。
04. 数组存储
大端模式:
高位存储在高地址,低位存储在低地址。
小端模式:
低位存储在低地址,高位存储在高地址。
05. 测试机器模式
测试机器的大小端模式代码
#include <stdio.h>
#include <string.h>
int main(void)
{
short i = 0x1234;
char *p = (char *)&i;
if (0x12 == *p)
{
printf("大端模式\n");
}
else
{
printf("小端模式\n");
}
return 0;
}
一般操作系统都是小端,而通讯协议是大端的。
猜你喜欢
- 2025-07-21 [西门子PLC] 两个S7-1200之间实现Modbus TCP客户端和服务器通信
- 2025-07-21 谈谈西门子PLC中的字位变换(西门子plc的字和位)
- 2025-07-21 史上最全齿轮类型介绍及主要参数计算与画法详解
- 2025-07-21 机械设计中的尺寸标注(机械设计中的尺寸标注,看懂复杂机械图纸)
- 2025-07-21 FANUC 0iTF 车床编程 G90 车削锥度指令
- 2025-07-21 C语言验证大小端的几个方法(用c语言实现大小端的测试)
- 2025-07-21 机器人也要“减重”? 机械臂用上碳纤维复合材料,性能或大有提升
- 2025-07-21 揭秘通信协议设计的奥妙,作为面试官我都看蒙了
- 2025-07-21 新手攻略!入门ARM必须要理解的22个常用概念
- 2025-07-21 NPT 螺纹与英制螺纹的区别大揭秘(英制螺纹和npt)
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)