首页 > 其他 > 详细

如何判断系统是大端还是小段算法

时间:2014-03-09 21:03:06      阅读:478      评论:0      收藏:0      [点我收藏+]

1 第一点,先要明白一个,就是系统在申请内存的时候,是从高地址到低地址还是从低地址到高地址。

先用下面一个简单的程序来判断申请的内存地址顺序问题。下面是一个典型的内存结构图。


bubuko.com,布布扣

我们用下面这个程序来检验:

#include <stdio.h>
int main()
{
	int a;
	int b;
	printf("%p\n",&a);//先申请a空间  并且a的地址更高
	printf("%p\n",&b);
	return 0;
}

输出结果是:

bubuko.com,布布扣


可以看出,栈空间的申请是从高到低的。


2 有了上面的概念后,我们开始进行大端小端的分析。

先引入一则关于大端和小端的故事:端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。在计算机业界,Endian表示数据在存储器中的存放顺序。

简单来说,大端就是将高位字节放到低位地址空间里,小端就是将高位字节放到高位字节。

那么如何检测一个系统是大端还是小端,我们可以用下面的代码:

#include <stdio.h>
//判断操作系统是大端还是小端
bool checkendian()
{
	union my
	{
		int a;
		char b;
	};
	my t;
	t.a=1;
	return(t.b==1);
}
int main()
{
	printf("%d\n",checkendian());
	return 0;
}

结果输出是1,说明是小端的,具体分析如图:

bubuko.com,布布扣


如何判断系统是大端还是小段算法,布布扣,bubuko.com

如何判断系统是大端还是小段算法

原文:http://blog.csdn.net/itbuluoge/article/details/20848749

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!