判断当前是大端系统还是小段系统(C实现)

博客介绍了大小端系统的概念,大端系统将数据低位字节序内容放高地址,高位放低地址;小端系统相反。还给出判断大小端系统的方法,一是查看低位地址值是否为1,需将数值强制转换为char类型指针;二是利用构造union的方法。

实际上,大小端指的是数据在内存中的储存模式
大端系统:数据的低位字节序的内容放在高地址处,而高位字节序的内容放在低地址处。
小段系统:数据的低位字节序的内容放在低地址处,而高位字节序的内容放在高地址处。
例如存储 int a = 1
如果是大端系统,则如下图所示:
在这里插入图片描述
反之小端系统如下:
在这里插入图片描述
实际上,我们只需要判断地位地址是否为1,如果是大端系统时,低位存储的是00,反之01
方法一:查看低位地址的值是否为1,这里需要将数值强制转换为char类型的指针

int  judgeSys()
{
		int a = 1;
		char *p = (char*)&a;
		if(1 == *p)
			return 1;   //判断为大端系统
		else 
			return 0;   //判断为小端系统
}

方法二:利用构造union的方法,a和b一共用了4个字节的内存,如图:
在这里插入图片描述
如果是大端系统,修改 i 的值后,c的值不会被修改,反之则会改变。代码如下:

int  judgeSys()
{
		union  sys
		{
				char a;
				int b;
		}
		union sys test;
		test.b = 1
		return test.a
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值