大小端字节序

数据在内存中的存储是有先后顺序问题的,存储顺序由计算机硬件决定,根据存储顺序可以分为小端存储模式和大端存储模式,即大小端字节序。


小端字节序

以字节为单位,将数据的低位存放在低地址处,将高位存放在高地址处。如int类型的16进制数0x11223344,以小端字节序方式存储时,在内存中地址由低到高显示为44 33 22 11

小端字节序

大端字节序

以字节为单位,将数据的低位存放在高地址处,将高位存放在低地址处。如int类型的16进制数0x11223344,以大端字节序方式存储时,在内存中地址由低到高显示为11 22 33 44

大端字节序

如何判断当前机器采用的是小端字节序还是大端字节序呢?以int类型的1为例,如果当前机器采用小端,通过解引用访问第一个字节空间的数据将为1;如果当前机器采用大端,通过解引用访问第一个字节空间的数据将为0。下面我们编写一个程序来判断当前机器的字节序。

#include <stdio.h>

int main()
{	
	int n = 1;
	if (*(char*)&n)
		printf("小端\n");
	else
		printf("大端\n");
	return 0;
}

将int类型变量n的地址强转为char*类型后,解引用时只能访问变量n第一个字节的空间,机器采用小端字节序时解引用拿到1;机器采用大端字节序时解引用拿到0。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值