大端模式和小端模式
1. 定义
这是个老生常谈的问题,定义大家都懂:
- 大端模式:数据低位存放在内存高位
- 小端模式:数据高位存放在内存高位
比如一个十进制数字:12345678
数据低位就是数据的右边,数据高位就是数据的左边;
地址低位就是地址的左边,地址高位就是地址的右边。
假如一页纸表示内存的话,大端模式刚好符合我们平时写字的习惯:地址低位存放数据高位。
2. 大小端的单位:Byte VS bit
很多文档都提到过,大小端是以字节为单位的,我之前也是这样认为的。
假如大小端以字节为单位,那么一个字节内部的bit是如何排列呢?
比如0x1234,大端模式排列为:0001 0010 0011 0100,小端模式排列就是bit完全反过来:0010 1100 0100 0001.
认识到这个很重要,特别是遇到按bit定义变量的时候。
比如信息传输的时候,一个字节按照bit划分为几部分:
Byte0
7~5: a
4~0: b
Byte1
c
大端模式就需要这么定义结构体:地址低位(先写的、左边的)存放变量高位(a):
struct S {
uint8 a : 3;
uint8 b : 5;
uint8 c;
}
小端模式就需要这么定义结构体:地址低位(先写的、左边的)存放变量低位(b):
struct S {
uint8 b : 5;
uint8 a : 3;
uint8 c;
}
本文来自博客园,作者:moonのsun,转载请注明原文链接:https://www.cnblogs.com/moon-sun-blog/p/17112400.html

浙公网安备 33010602011771号