big endian 和 little endian 个人理解

原创 2013年12月05日 15:09:48

最近接触到 endian 的问题,对big  endian  和little endian  两者理解不是很深,特地花了点时间对其进行整理,特将总结记录下来。


我们知道 int  数据类型 在内存当中是占据4 字节的 (32 位)。 多字节数据(当然包括int 数据类型)在内存当中时顺序存储的。链表除外。

int  A=1;
int  B=2;
B1  B2  B3  B4     ~    Bn+1  Bn+2 Bn+3  Bn+4
     A  		           B

这是A  ,B 数据在内存当中的存储方式。由此产生两个问题。

Q & A

问题一     &A  ,  &B  的地址值是多少?

问题二   A  和 B 的数据值(二进制码) 在这四个字节当中又是如何组织的呢?

问题一,其实很好解答,不论在 big endian  还是在little  endian  当中, 不论是在windows(little) 下 还是在 MAC(big ) 所获取的地址的方式都是首选地址 

&A     == B1
&B     == Bn+1

在解决问题一的基础上, 再来解决问题二相对好理解多了。 

int   A =0X11223344;

在我们传统思维里,其而二进制 码应该为     (大) 11  22  33  44  (小)

但是这并不一定代表着其内存组织方式也会同样如此。由此也就引出了 big  little  endian  的问题

让我们先看结果:

little  endian
int A=0X11223344 映射方式
B1    B2    B3       B4 
0X44  0X33  0X22    0X11 , &A  指针所指向B1 地址值。
---------------------------------------------------- 
big endian
int A=0X11223344 映射方式
B1   B2    B3       B4   
0X11 0X22  0X33    0X44 ,&A 指针所指向B1 地址值

结论:
big endian  指针所指向  大头(高位), 即数值较大的地址值 
little endian  指针所指向 小头(低位), 即数值较小的地址值 

某种程度上讲  big endian 更符合我们对传统二进制的认知。 little endian优先取地位值的方式对于计算机运算或许会更加便捷(个人看法,尚未验证O(∩_∩)O)


编程区分 big endian  和 little endian 

unsign int   A =0x1122;
if((*(unsign int &A))==0X11)
	return  true;    // big endian 
else 
       return  false;    // little endian
// end 








                    
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

架构实战经验一:架构设计中的大小端模式(little-big endian)

问题:架构设计中的大小端模式(little-big endian)        TX公司有一款有关智能手机应用的产品,该产品包括支持四个智能主流手机平台(symbian, windows mobi...

Big/Little Endian——字节存储顺序

转自:http://hi.baidu.com/qzfukwzlvgqsvzr/item/97aba6304e9d10f82784f4d9        嵌入式编程的面试或被面试的过程...
  • ustb_md
  • ustb_md
  • 2012年09月23日 23:38
  • 217

字节存储排序:大端(big endian)和小端(little)的判别及转换

当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-en...

Big/Little endian

“任何你真正想得到的一定是值得坚持的!“

如何理解小端(Little-endian)与大端(Big-endian)

大家可能都知道字节序里大端和小端的意思和作用。 标准的Big-Endian和Little-Endian的定义如下: a)Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的...

Big Endian & Little Endian.pdf

  • 2011年10月09日 22:02
  • 52KB
  • 下载

Little Endian & Big Endian

这个标题中的Endian是什么意思呢?还是让我们先来看看下面的情况,这是内存中一个WORD值中的内容,那么这个WORD中的值是0x1234呢,还是0x3412 ?  low byte hig...

little endian和big endian的概念解释

  • 2016年03月04日 22:30
  • 39KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:big endian 和 little endian 个人理解
举报原因:
原因补充:

(最多只允许输入30个字)