大小端对字节序和位序的影响

1、字节序(byte order)

大端存储格式:即多字节数据的高字节存储在低地址中,而低字节数据存放在高地址中。

小端存储格式:即多字节数据的高字节存储在高地址中,而低字节数据存放在低地址中。

例子:short类型的数据 0x0201

大端存储格式

存放内容

0x02

0x01

内存地址

低地址:0x0001

高地址:0x0002

小端存储格式

存放内容

0x01

0x02

内存地址

低地址:0x0001

高地址:0x0002

2、位序(bit order)

在字节内部也存在大小端问题,相应的大小端定义为:

大端存储格式:即多位数据的高位存储在字节的低位中,而低位数据存放在高位中,且从内存的高位开始存放。

小端存储格式:即多位数据的高位存储在字节的高位中,而低位数据存放在低位中,且从内存的低位开始存放。

注意:若多位数据大于1byte(8bit),则先按字节序中大小端的定义分配相应大小的位数据到相应的字节中,再按位序大小端定义分配到相应的位地址。

例如:

struct s{

short bit1:4;

short bit2:9;

short bit3:3;

};

s sA;

sA.bit1=0b3210;//此处数字(3)仅表示输入时,在字节中所处的位数(第3位,真实数据为(0或1)*2^3)

sA.bit2=0b876543210;

sA.bit3=0b210;

大端存储格式

存放内容

sA.bit1(0b0123)

sA.bit2(0b5678)

sA.bit2(0b01234)

sA.bit3(0b012)

0b01235678

0b01234012

位数据

0

1

2

3

5

6

7

8

0

1

2

3

4

0

1

2

位地址

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

内存地址

低地址:0x0001

高地址:0x0002

小端存储格式

存放内容

sA.bit2(0b3210)

sA.bit1(0b3210)

sA.bit3(0b210)

sA.bit2(0b87654)

0b32103210

0b21087654

位数据

3

2

1

0

3

2

1

0

2

1

0

8

7

6

5

4

位地址

7

6

5

4

3

2

1

0

7

6

5

4

3

2

1

0

内存地址

低地址:0x0001

高地址:0x0002


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值