Linux学习笔记基础篇:判断机器是大端机或者小端机

最近开始学习linux,其中一个简单的程序就是如何判断大小端,首先我们来区别一下大小端机器:
**

大端机器:

**
因为在C语言种不同变量类型会占用不同大小的内存,比如8Bit的char型,16位的short型,32位的long型,当然具体还要看编译器和是32位还是64位,而大端模式就是将数据的高位的放在低内存地址中,低位的放在高地址中,这种方式和我们的逻辑方式比较相反,用图解:在这里插入图片描述

小端机器:

小端和大端正好相反,他是将高位数据存放在高地址中,低位存放于低地址,即在这里插入图片描述于是我们便可以看出只需要看你数据存放位置结合不同数据所占内存不同便可以区分大小端机器了,代码如下:`
#include <stdio.h>

int main()
{
int data = 1;
char* p = (char*)&data;

if(*p == 1)
{
	printf("小端机器\n");
}
else if(*p == 0)
{
	printf("大端机器\n");
}

return 0;

}

当然还有一种方法是用联合体,因为联合体是所有数据共享一块内存区域,只需要将联合体进行隐式转换就可以再根据结果就可以判断出。

另外,在linux的开发者,在内核中可以这样来测试机器的类型

static union { char c[4]; unsigned long mylong; } endian_test = {{‘l’,’?’,’?’,‘b’}};

#define ENDIANNESS ((char)endian_test.mylong)

cout<<ENDIANNESS<<endl;

学习心得,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值